【问题标题】:class template cpp, hpp, cpp [duplicate]类模板cpp,hpp,cpp [重复]
【发布时间】:2015-09-03 03:30:02
【问题描述】:

我的 .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)

【问题讨论】:

    标签: c++ class templates matrix


    【解决方案1】:

    模板代码必须在标头中,除非是为了专业化。

    这是因为模板在你使用的时候用来生成实际的类。

    【讨论】:

    • 专业化是什么意思?
    • @Mumfordwiz 如果你有一个模板类A&lt;T&gt;,你可以另外编写一个单独的例如。 A&lt;float&gt; 使用不同的代码,然后对于 float 将使用第二个类,对于其他所有内容都将使用第一个。
    • @deviantfan 明白了。谢谢!
    猜你喜欢
    • 2016-11-15
    • 2014-10-11
    • 2017-04-03
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多