如何将模板参数设置为
func
方法的返回类型
类 BazClass
不与类模板冲突
#include <iostream>
//Declarations goes here...
template <class T>
class FooClass{
public:
T foo;
};
template <class C>
class BazClass{
public:
FooClass func(); //Line 13
};
//Definitions goes here...
template <class C>
FooClass BazClass <C> ::func(){ //Line 18
FooClass <int> fooins;
return fooins;
};
int main(){
BazClass <int> bazins;
bazins.func();
return 0;
}
当我用 . 。 .
g++ -std=c++17 -o program program.cpp
高于编译器参数,它会引发低于编译时错误
program.cpp:37:3: error: use of class template 'FooClass' requires template arguments; argument deduction not allowed in function return type
FooClass func();
^~~~~~~~
program.cpp:29:7: note: template is declared here
class FooClass{
^
program.cpp:42:1: error: use of class template 'FooClass' requires template arguments; argument deduction not allowed in function return type
FooClass BazClass <C> ::func(){
^~~~~~~~
ElevenX.cpp:29:7: note: template is declared here
class FooClass{
^
program.cpp:44:10: error: no viable conversion from returned value of type 'FooClass<int>' to function return type 'int'
return fooins;
^~~~~~
3 errors generated.
据我了解,问题不在于指定模板参数,
第 13 行:
FooClass func(); //Line 13
和第 18 行:
FooClass BazClass <C> ::func(){ //Line 18
但我的问题是我不知道如何在这些地方指定模板参数? (对于之前的错误的错误信息我真的很抱歉)
FooClass func();
指定
func
返回 FooClass
,但未指定 T
将使用什么 FooClass
。因此:
FooClass<C> func();
如果您同意将
C
指定为 T
。