Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误:模板名称的使用无效‘;ExTree’;如果没有参数列表| |如何解决此问题?(初学者)_C++_Struct_Compiler Errors - Fatal编程技术网

C++ 错误:模板名称的使用无效‘;ExTree’;如果没有参数列表| |如何解决此问题?(初学者)

C++ 错误:模板名称的使用无效‘;ExTree’;如果没有参数列表| |如何解决此问题?(初学者),c++,struct,compiler-errors,C++,Struct,Compiler Errors,丢失的部分在哪里?或者反过来说,这里怎么了?我还是C++新手,这样的事情对谷歌来说很难,特别是搜索。 template <typename T> struct ExTree{ T tensor; ExTree* left, *right; }; template <typename T> ExTree* newExTree<T>(T tensor){ ExTree *e = new ExTree<T>(); e-&

丢失的部分在哪里?或者反过来说,这里怎么了?我还是C++新手,这样的事情对谷歌来说很难,特别是搜索。
template <typename T>
struct ExTree{
    T tensor;
    ExTree* left, *right;
};

template <typename T>
ExTree* newExTree<T>(T tensor){
    ExTree *e = new ExTree<T>();
    e->left = e->right = NULL;
    e->tensor = tensor;
    return e;
}
模板
结构外部{
T张量;
外向*左,*右;
};
样板
ExTree*newExTree(T张量){
ExTree*e=新ExTree();
e->left=e->right=NULL;
e->张量=张量;
返回e;
}
这是错误消息:

In file included from main.cpp:5:0:
expression.hpp:47:1: error: invalid use of template-name ‘ExTree’ without an argument list
 ExTree* newExTree<T>(T tensor){
在main.cpp:5:0中包含的文件中:
表达式.hpp:47:1:错误:在没有参数列表的情况下,模板名称“ExTree”的使用无效
ExTree*newExTree(T张量){

编辑:我已经找到了错误,但我仍然无法找到它背后的原因,因此我的问题仍然是有效的。我希望它不是简单的^^

正确的语法应该是:

template <typename T>
ExTree<T>* newExTree(T tensor){
    ExTree<T> *e = new ExTree<T>();
    e->left = e->right = nullptr;
    e->tensor = tensor;
    return e;
}

我理解这个请求,但问题是,我希望尽可能保持模板参数的通用性,因为我以后可能会添加更多的张量类。但我现在会记住它,thx@CleboSevic专门化只是作为一个演示/示例,而不是要求您这样做代码确实是泛型的,不需要专门化。
template<> ExTree<int>* newExTree<int>(int x) {
    // ...
}