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