2010-12-15 43 views
0

是以下幾種可能:模板類容器指針本身

template<class Container> 
class TreeNode 
{ 

Container mChildren; 
} 

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

什麼是你的編譯器告訴你嗎? – KevenK 2010-12-15 15:43:11

+0

發出以下錯誤:錯誤C3203:'TreeNode':未經專門處理的類模板不能用作模板參數'T'的模板參數,預期實際類型 – user152508 2010-12-15 15:50:31

回答

2

不喜歡你做。 TreeNode不是一個類,而是一個類模板。 我在現在着急所以這可能不是最簡單的或優雅的方式,但它是可能的:

#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;