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++テンプレートクラス継承、メンバ型の指定方法は?
は、しかし、私は本当にこれが欲しい、ATree上 std::vector<Anode<_datTy>>
は時間をコンパイルし、B木の std::vector<Bnode<_datTy>>
は時間をコンパイルします。
現在のアーキテクチャポイントでは、std::vector<_nodeTy *>
のような基本クラスポインタは使用しません。
この問題はどのように考えられますか? お読みいただきありがとうございます。
ありがとうございました!私はそのパターンを適用しようとします。 –