試圖編譯我上課的時候,我得到一個錯誤。錯誤:預期的構造函數,析構函數或類型轉換之前「::」令牌
錯誤:
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);
}
'_MATRIX_H'是一個保留標識符(你不能在你的程序中使用它,它是編譯器使用)。任何以下劃線開頭且後跟大寫字母的標識符都是保留的。考慮改用'MATRIX_H_'。 – 2011-03-18 22:49:08
另外,Matrix :: Matrix add(Matrix);'是錯誤的。它應該是'Matrix add(Matrix);'。更符合的編譯器會拒絕這樣的代碼。 – 2011-03-19 00:35:19