#include <iostream>
using namespace std;
void doStuff();
int main() {
doStuff();
return 0;
}
template<typename T>
void doStuff() {
T k = 6;
cout << k << endl;
}
您好。我遇到了这个错误。每次我都会收到类似的错误,&#34;未定义参考doStuff&#34;。这个问题有解决方案吗?
答案 0 :(得分:2)
doStuff()
的声明表示非模板函数,定义是函数模板的定义,它们不匹配。
我想你想要的是功能模板,然后
template<typename T>
void doStuff() {
T k = 6;
cout << k << endl;
}
int main() {
doStuff<int>();
return 0;
}
您还可以在main()
之前放置声明,在main()
之后放置定义。 e.g。
template<typename T>
void doStuff();
int main() {
doStuff<int>();
return 0;
}
template<typename T>
void doStuff() {
T k = 6;
cout << k << endl;
}
请注意,您需要在调用doStuff
时指定模板参数,因为它无法自动推断。
答案 1 :(得分:0)
由于它是模板函数,因此在调用函数时需要输入类型名称。
int
doStuff<int>();
char
doStuff<char>();
所以程序看起来像
#include <iostream>
using namespace std;
template<typename T>
void doStuff() {
T k = 6;
cout << k << endl;
}
int main() {
doStuff<int>();
return 0;
}