当我使用模板为类编写C++代码并在源(CPP)文件和标题(H)文件之间拆分代码时,在链接最终可执行文件时会出现大量"未解析的外部符号"错误,尽管目标文件正确构建并包含在链接中.这里发生了什么,我该如何解决?
我有此函数声明:
template<class T>
a::A& a::A::operator<<(T out) {
std::cout << out;
return (*this);
}
Run Code Online (Sandbox Code Playgroud)
和此函数定义:
namespace a {
...
class A {
...
template<class T> A& operator<<(T);
Run Code Online (Sandbox Code Playgroud)
我称之为:
a::A b;
b << 1;
Run Code Online (Sandbox Code Playgroud)
这是Makefile:
app: main.o A.o
g++ main.o A.o -o app
main.o: main.cpp
g++ -c main.cpp
A.o: A.cpp
g++ -c A.cpp
Run Code Online (Sandbox Code Playgroud)
它给了我:
未定义的符号:a :: A&a :: A :: operator << <int>(int)
这是为什么?