先前在此声明,C ++模板:

时间:2014-11-20 18:23:42

标签: c++ templates

我正在尝试使用模板,但它不起作用,错误是:"此前在此宣布"

这是我的Matrix.h文件:

#ifndef MATRIX_H
#define MATRIX_H

template <class T>
class Matrix
{
public:
     Matrix(int); // default cunstractor

private:
    int rows, columns;
};

#include "Matrix.cpp"
#endif

这是我的Matrix.cpp文件

#include "Matrix.h"
#include<iostream>
using namespace std;

template <class T>
Matrix<T>::Matrix(int a) // Default constructor
{
   columns = a;
   rows = 0;
}

这是主文件:

#include<iostream>
#include "Matrix.h"
using namespace std;

int main()
{

Matrix<int> m1(5);
return 0;
}

我知道代码看起来非常愚蠢和简单,但是我写了更多内容,我将它简化为非常简单的代码,并且它再次起作用。即使我删除了

#include "Matrix.cpp"

在Matrix.h文件中,但仍有问题。

1 个答案:

答案 0 :(得分:1)

将matrix.cpp文件的内容(模板定义)移动到matrix.h。