[英]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.