#include <iostream>
using namespace std;
void doStuff();
int main() {
doStuff();
return 0;
}
template<typename T>
void doStuff() {
T k = 6;
cout << k << endl;
}
你好。我被这个错误困住了。每次我都会收到类似“未定义的 doStuff 引用”的错误。这个问题有解决办法吗?
最佳答案
doStuff()
的声明表示非模板函数,定义是函数模板的定义,它们不匹配。
我想你想要的是函数模板,那么
template<typename T>
void doStuff() {
T k = 6;
cout << k << endl;
}
int main() {
doStuff<int>();
return 0;
}
您还可以将声明放在 main()
之前,将定义放在 main()
之后。例如
template<typename T>
void doStuff();
int main() {
doStuff<int>();
return 0;
}
template<typename T>
void doStuff() {
T k = 6;
cout << k << endl;
}
注意,调用doStuff
时需要指定模板参数,因为它无法自动推导。
关于c++ - 未定义的“函数引用”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44042125/