C++ 模板,链接错误

标签 c++ templates linker

我在调用我拥有的模板类时遇到问题。 我声明了一个新的类型名称Array,它是一个模板;

在 .hpp 文件中:

template <typename T>
class Array
{
public:
   Array();
};

.cpp 文件中:

template <typename T>
Array<T>::Array()
{
//Do something
}

主要:

Array<int> arr;

我收到链接错误:未解析到 ctor 的外部符号。

有什么想法吗?

最佳答案

模板函数,包括成员函数,必须完全写在头文件中。这意味着如果你有一个模板类,它的实现必须完全在一个头文件中。这是因为编译器需要访问整个模板定义(而不仅仅是签名)才能为模板的每个实例化生成代码。

关于C++ 模板,链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1353973/

相关文章:

c++ - 为什么 Visual C++ 会更改我的方法的名称?

c++ - C++ 中的模板参数存储在哪里?

c# - 文本框 Silverlight 的样式

C++ 模板 : Function as Template Class Parameter

非模板类中的 C++ 模板函数

objective-c - Apple Mach-O 框架错误

c++ - 如何将轴移动到 QCustomPlot 的中间

c++ - 争论的种类

c - 找到起点,int main()

c++ - Visual Studio 2010 中的 FFTW