“ T”不是参数“ T”的有效模板类型参数

万达纳

我编写了一个程序,使用类将已排序的数组转换为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*

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

参数类型与UrlFetchApp有效负载不匹配

jsdoc有效的参数类型

类型T不是有效的参数代替有界参数`<T extended Collection <?>>

Java泛型:绑定不匹配:类型不是该类型的bounded参数的有效替代品

参数列表中的void_t有效,但不作为返回类型

匿名参数有效-但不是显式参数-对于scala reduceLeft

“ AdditionalDeploymentContributors”不是“发布”操作的有效参数

参数不是C#中的有效异常

演绎和参数包不是最后一个模板参数:这是有效代码吗?

在Firestore上,参数“选项”不是有效的SetOptions错误

值%不是类型参数T(Scala)的成员

为什么模板参数中的双冒号有效?

没有定义的类声明是否有效作为模板参数

“”插入到“语句由于”参数7(“”)导致错误:提供的值不是数据类型float的有效实例。“

将typedef放在使用类本身作为模板参数的类中是否有效?

Scala类型系统。“延迟”类型参数。为什么这样有效?

Typescript Array [T]接受{..T}作为有效类型

基于另一个参数约束参数类型的最有效方法

类型参数干扰无效,但显式类型参数有效

C ++ 20非类型模板参数,它是先前类型参数中的模板:不是有效模板arg,因为不是变量

使用参数指定有效的泛型类型

fwrite():提供的参数不是有效的流资源

具有不依赖模板参数的原型的虚函数在模板中是否有效?

未指定模板参数,但仍然有效

Java泛型-具有“扩展”类型的集合参数的方法拒绝有效的参数?

ElasticSearch 2.1“ aggs”不是有效的参数

Mailgun:'to' 参数不是有效地址

Kairos API - gallery_name 不是有效参数

value - 不是类型参数 T | 的成员 Scala 错误