1
template <typename _datTy>
class ANode{
typedef ANode<_datTy> _nodeTy;
public:
std::vector<_nodeTy> childVector;
};
template <typename _datTy, class _nodeTy = ANode>
ATree
{
public :
void doSomeThing()
{
auto iter = _root.childVector.begin();
}
protected:
_nodeTy _root;
};
template <typename _datTy>
class BNode :
public ANode<_datTy>
{
typedef BNode<_datTy> _nodeTy;
public:
bool somethingExtends;
};
template <typename _datTy>
BTree :
public ATree<_datTy, BNode<_datTy>>
{
...
};
BTree<char> test;
test.doSomeThing();
此代码问题是std::vector<_nodeTy> childVector
。 它在BTree编译时转换为std::vector<Anode<_datTy>>
。C++模板类继承,如何向成员类型指定?
但我真的想这样, std::vector<Anode<_datTy>>
上ATREE编译时间和 std::vector<Bnode<_datTy>>
在B树编译时间。
在当前体系结构点上,我不使用基类指针std::vector<_nodeTy *>
。
怎么想到这个问题? 感谢您的阅读。
谢谢你的答案!我尝试应用这种模式。 –