gpt4 book ai didi

c++ - “T”不是参数 'T' 的有效模板类型参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:35:36 26 4
gpt4 key购买 nike

我编写了一个程序,使用类在 C++ 中将排序数组转换为 BST。我收到以下错误:

error C2143: syntax error : missing ';' before '*'

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

error C2065: 'T' : undeclared identifier

error C2923: 'Binary_Search_Tree' : 'T' is not a valid template type argument for parameter 'T'

以下是我的程序:

template <class T>
class Binary_Search_Tree {
public:
struct Bst_Node {
T value;
Bst_Node* left;
Bst_Node* right;
};

Bst_Node* root;

Binary_Search_Tree();

Bst_Node* sortedarraytobst(T* A, int start, int end);
};

template <class T> Binary_Search_Tree<T>::Binary_Search_Tree() {
root = nullptr;
std::cout << "Constructor called" << std::endl;
}

template <class T> Bst_Node* Binary_Search_Tree<T>::sortedarraytobst(T* A, int start, int end) {

if(start > end)
return NULL;

int mid = start + (end - start)/2;
Bst_Node* newnode = new Bst_Node();
newnode->value = A[mid];
newnode->left = sortedarraytobst(A,start,mid-1);
newnode->right = sortedarraytobst(A,mid+1,end);

return newnode;
}

int main()
{
Binary_Search_Tree<int> tree;
int Array[10] = {1,2,5,6,8,9,12};
int n = sizeof(Array)/sizeof(Array[0]);
tree.root = tree.sortedarraytobst(Array,0,n-1);

return 0;
}

请求这方面的帮助。我发现模板的使用非常困惑。

最佳答案

sortedarraytobst的返回值中实现,你应该替换 Bst_Node*typename Binary_Search_Tree<T>::Bst_Node* .当作为返回类型时,它被视为“类外”,因此无法解析 Bst_Node* .

关于c++ - “T”不是参数 'T' 的有效模板类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32491603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com