簡體   English   中英

如何組織類以共享數據成員但保留封裝c ++?

[英]How to organize classes to share data members but preserve encapsulation c++?

我想首先使用隊列在C ++中建立樹寬。 我有文件Queue.h,Queue.cpp,Tree.h,Tree.cpp和main.cpp。 我的主要課程包括“ Tree.cpp”。 如何使用#include關鍵字構造這些文件,以便我的隊列可以推送和彈出樹節點,而我的樹可以操縱隊列? 看來我遇到的部分問題是每個類中的結構都是私有的。 我的隊列無法在其結構中定義treePtr,並且我的樹無法實例化新的隊列節點。 我是否應該在每個班級中公開這些結構,以便它們可以跨班級相互訪問? 通常,我應該如何組織這些類以利用封裝?

class Tree{
private:
    typedef struct tree {
        int data;
        tree* left;
        tree* right;
    }* treePtr;

    treePtr root;
    int numNodes;
    void addTree(int n, treePtr child);
    treePtr addTree(int n);


public:

    Tree();
    void addTreeNode(int integer);
    treePtr getRoot();
    void printTreeNode(int n, treePtr treeRoot);

};


class Queue {
private:
    typedef struct node {
        Tree::treePtr treeNode;
        node* next;
    }* nodePtr;

    nodePtr head;
    nodePtr current;

public:
    Queue();
    void push(treePtr t);
    int pop();
};

對於@Eugene,答案是讓Tree和Queue成為共同的朋友。 這是在類主體內每個類的頭文件中完成的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM