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();
Dieses Codeproblem ist std::vector<_nodeTy> childVector
. Es ist zu std::vector<Anode<_datTy>>
auf BTree kompilieren Zeit übersetzen.C++ Template-Klasse Vererbung, wie zu Member-Typ-Spezifikation?
Aber ich will das wirklich, std::vector<Anode<_datTy>>
auf aTree Zeit kompilieren, und std::vector<Bnode<_datTy>>
auf BTree Zeit kompilieren.
Ich verwende keinen Basisklassenzeiger wie diesen std::vector<_nodeTy *>
, auf dem aktuellen Architekturpunkt.
Wie kann man dieses Problem lösen? Danke für Ihr Lesen.
danke Ihre Antwort! Ich versuche, dieses Muster anzuwenden. –