我在尝试编译课程时遇到错误。
错误:
Matrix.cpp:13:错误:在'::'标记之前预期的构造函数,析构函数或类型转换
Matrix.h
#ifndef _MATRIX_H
#define _MATRIX_H
template <typename T>
class Matrix {
public:
Matrix();
~Matrix();
void set_dim(int, int); // Set dimensions of matrix and initializes array
unsigned int get_rows(); // Get number of rows
unsigned int get_cols(); // Get number of columns
void set_row(T*, int); // Set a specific row with array of type T
void set_elem(T*, int, int);// Set a specific index in the matrix with value T
bool is_square(); // Test to see if matrix is square
Matrix::Matrix add(Matrix); // Add one matrix to another and return new matrix
Matrix::Matrix mult(Matrix);// Multiply two matrices and return new matrix
Matrix::Matrix scalar(int); // Multiply entire matrix by number and return new matrix
private:
unsigned int _rows; // Number of rows
unsigned int _cols; // Number of columns
T** _matrix; // Actual matrix data
};
#endif /* _MATRIX_H */
Matrix.cpp
#include "Matrix.h"
template <typename T>
Matrix<T>::Matrix() {
}
Matrix::~Matrix() { // Line 13
}
的main.cpp
#include <stdlib.h>
#include <cstring>
#include "Matrix.h"
int main(int argc, char** argv) {
Matrix<int> m = new Matrix<int>();
return (EXIT_SUCCESS);
}
答案 0 :(得分:6)
Matrix::~Matrix() { }
Matrix
是一个类模板。你有正确的构造函数定义;析构函数(以及任何其他成员函数定义)需要匹配。
template <typename T>
Matrix<T>::~Matrix() { }
Matrix<int> m = new Matrix<int>();
这不起作用。 new Matrix<int>()
会产生Matrix<int>*
,您无法初始化Matrix<int>
。这里不需要任何初始化程序,下面将声明一个局部变量并调用默认构造函数:
Matrix<int> m;
答案 1 :(得分:3)
将析构函数定义为
template <typename T>
Matrix<T>::~Matrix() {
}
其他错误是您无法在.cpp-file Template Factory Pattern in C++
中放置类模板的实现