我无法在C++中使用模板进行编程.
请考虑以下文件.
章
#ifndef _C_H
#define _C_H
template <class T>
class C {
public:
C();
virtual ~C();
}
#endif _C_H
Run Code Online (Sandbox Code Playgroud)
C.cpp
#include "C.h"
template <class T>
C<T>::C() {
}
template <class T>
C<T>::~C() {
}
Run Code Online (Sandbox Code Playgroud)
我尝试在名为main.cpp的文件中实例化一个C实例.
#include "C.h"
int main(int argc, char** argv) {
C<int> c;
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误.
main.cpp undefined reference to `C<int>::C()'
Run Code Online (Sandbox Code Playgroud)
然后我跑了
g++ -o C.o C.pp
g++ -o main.o main.cpp
Run Code Online (Sandbox Code Playgroud)
但得到错误
main.cpp: undefined reference to `C<int>::C()'
main.cpp: undefined reference to `C<int>::~C()'
Run Code Online (Sandbox Code Playgroud)
我确信这可能是一个明显的错误,但我是一个真正的初学者,所以将不胜感激任何帮助.
谢谢!
使用模板时,只要实例化类型,源代码就必须可用,否则编译器无法检查模板代码是否适用于给定类型.将其分为.cpp和.h文件将不起作用,因为其他.cpp文件只知道.h文件.
您基本上必须将所有内容放在.h文件中,或者在实现代码中包含一个额外的文件.