如何组织类来共享数据成员但保留封装c ++?

时间:2015-11-11 05:39:45

标签: c++ tree encapsulation

我想首先使用队列在c ++中构建树宽度。我有文件Queue.h,Queue.cpp,Tree.h,Tree.cpp和main.cpp。我的主要课程#includes“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();
};

1 个答案:

答案 0 :(得分:0)

Per @Eugene,答案是让Tree和Queue成为共同的朋友。这是在类体内每个类的头文件中完成的。