class template cpp,hpp,cpp

时间:2015-09-03 03:30:02

标签: c++ class templates matrix

我的.hpp文件中有这个类

template<class T = int>
class Matrix
{
    public:
    Matrix();
}

我有这个Matrix.cpp文件

#include "Matrix.hpp"
template<class T>
Matrix<T>::Matrix()
{
    vector<T> vecN(1, 0);
    _matrix.resize(1, vecN);
    _rows = 1;
    _cols = 1;
}

但添加主

时无法使用
#include "Matrix.hpp"

int main(int argc, char** argv)
{
    Matrix<int> test();
    return 0;
}

我得到了一个非常奇怪的错误

main.cpp:19: undefined reference to Matrix<int>::Matrix(unsigned int, unsigned int)' main.cpp:19:(.text+0x2d): relocation truncated to fit: R_X86_64_PC32 against undefined symbol Matrix<int>::Matrix(unsigned int, unsigned int)

1 个答案:

答案 0 :(得分:3)

模板代码必须位于标题中,除非是专门化。

这是因为模板用于在您使用时生成实际的类。