实现具有任意数量的派生类型的子节点的基类树?

时间:2019-05-04 18:01:49

标签: c++ tree

我想要实现一个具有以下结构的GPA计算器程序:年份的集合是年份的树,一年是一学期的树,而一学期是一门课程的树。这些类型都将从一个称为“容器”的基类派生。由于我们不知道一个学期可以包含多少个类,因此我希望有一个指向其子类的指针向量,以便我们可以添加任意数量的课程节点。以下实现方式行得通吗?

template <typename ContainerType, typename ChildType>
class Container
{
protected:
    // Node class definition.
    class Node
    {
    public:
        ContainerType   data;   // contents of the node.
        vector<Node*>   child;  // links to the node's children.
        // Node constructor functions:
        Node() { }
        Node(const ContainerType &theData) : data(theData) { }
    };
protected:
    Node *current;   // Points to the current node
    Node *parent;    // Points to current node's parent
};

我希望每次添加一个子节点时,都可以根据需要增加子节点指针的数量。这可能吗?我有一种感觉,因为容器的节点指针将指向不同类型的节点,所以这可能会引起问题。

0 个答案:

没有答案