2010-12-15 5 views
0

est possible suivante:classe modèle avec conteneur avec des pointeurs vers lui-même

template<class Container> 
class TreeNode 
{ 

Container mChildren; 
} 

TreeNode<std::vector<boost::shared_ptr<TreeNode>> myTreeNode; 
+1

Qu'est-ce que votre compilateur vous dire? – KevenK

+0

L'erreur suivante est générée: erreur C3203: 'TreeNode': le modèle de classe non spécialisé ne peut pas être utilisé comme argument de modèle pour le paramètre de modèle 'T', attendu pour un type réel – user152508

Répondre

2

pas comme vous l'avez fait. TreeNode n'est pas une classe mais un modèle de classe. Je suis pressé maintenant si cela pourrait ne pas être le plus simple ou élégant, mais il est possible:

#include <vector> 

using namespace std; 

class Container {}; 

template<class Container> 
class TreeNode 
{ 
    Container mChildren; 
}; 

class TreeNodeWrapper; 

typedef TreeNode<std::vector<TreeNodeWrapper*> > recursiveTreeNode; 

class TreeNodeWrapper : public recursiveTreeNode { 
}; 

recursiveTreeNode myTreeNode; 
Questions connexes