我有以下代码:
#include <iostream>
template <class T>
class A;
int main()
{
A<int> obj;
}
template <class T>
class A
{
public:
A();
};
template <class T>
A<T> ::A()
{}
我的编译器(MS Visual Studio Update 4 Pro
)给出了以下错误:
error C2079: 'obj' uses undefined class 'A<int>'
MinGW
也给了我一个相同含义的错误。
这是什么原因?类A <T>
的声明在main
函数之前,因此应该知道。
答案 0 :(得分:0)
这正是它所说的内容:模板还没有在您尝试使用它时定义。必须提供定义,而不仅仅是声明,才能实例化模板。