从内部类继承并同时在外部模板上传递它?

时间:2018-09-04 20:51:14

标签: c++11 templates inner-classes

我正在尝试创建一个树结构,用户可以在其中创建自己的树节点继承者,但是该节点封装了一些代码,用于管理其在树中的位置并将子代暴露给继承者。我有类似的代码:

template <typename TData>
class TreeBase {
protected:
    struct TreeNode { // should be fully encapsulated
        TData data;
        ...
    };
public: ...
};

template <typename TNode>
struct Tree: public TreeBase<TNode> {
    class Node {
        typename TreeBase<TNode>::TreeNode _tn; // keep encapsulated
    public: ...
    };
    ...
    static_assert(std::is_base_of<Node, TNode>::value, "TNode must be a descendant of NodeTrie::Node");
};

尽管类定义可以编译,但我不知道如何使用它们。如果不能将Node的继承人放到Tree的继承人中,就不能成为Node的继承人;如果不传入节点类型,就不能成为Tree的继承人。这是鸡肉和鸡蛋的问题。有什么建议吗?

0 个答案:

没有答案