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 *>
。
怎麼想到這個問題? 感謝您的閱讀。
謝謝你的答案!我嘗試應用這種模式。 –