我知道这可能是第一年的问题,但是我遇到了一些模板问题,但我还没有找到合适的答案。我正试图像这样实例化一个新的模板化的类:
TreeNode <T>newLeft = new TreeNode(root->data[0]);
这是指一个看似如下的构造函数:
template <class T>
//paramerter receving constructor
TreeNode<T>::TreeNode(T item){
data[0] = item;
nodeType = 2;
}//end
我收到以下错误:
错误:'TreeNode'之前的预期类型说明符
错误:预期`;'在'TreeNode'之前
什么是类型说明符?如果有必要的话,我可以提供更多的代码,我知道我之前提出了一个关于这个代码的问题,我相信我会因此而受到抨击;但我仍有疑问......
编辑: 这是它用于的功能:
template <class T>
void TwoThreeFourTree<T>::splitRoot(){
TreeNode <T> newRoot;
newRoot = new TreeNode(root->data[1]);
TreeNode <T>newLeft = new TreeNode(root->data[0]);
TreeNode <T>newRight = new TreeNode(root->data[2]);
newRoot.child[0] = newLeft;
newRoot.child[1] = newRight;
newLeft.child[0] = root.child[0];
newLeft.child[1] = root.child[1];
newRight.child[0] = root.child[2];
newRight.child[1] = root.child[3];
root = newRoot;
}
每次尝试在函数
中创建新对象时,我都会遇到相同的两个错误答案 0 :(得分:4)
您忘记了T
中的new
和指针:
TreeNode<T>* newRoot;
newRoot = new TreeNode<T>(root->data[1]);
注意,你需要在任何地方修复你对指针的使用,而不仅仅是在这里。请记住,这不是Java或C#,TreeNode<T>
类型的变量不是引用到T
- 它 是T.要构建一个树,你需要引用 - 即指针。虽然您可能还想考虑在这里使用std::auto_ptr
来保证清理。