问候并提前感谢你!
我在macOS X 10.12中工作; Eclipse Neon 4.6,使用macOS X GCC进行编译。我收到以下错误:
../matrix.h:82:1: error: 'Matx' is not a class, namespace, or enumeration
`Matx::~matx(){`
`^`
`../matrix.h:27:7: note: 'Matx' declared here`
由于以下matrix.h
文件,该错误令人困惑:
#ifndef MATRIX_H_
#define MATRIX_H_
#include <iostream>
template <class T>
class Matx {
int ROWS, COLS ;
int colix[COLS], rowix[ROWS] ;
T ** array ;
Matx(int, int) ;
~Matx() ;
void rowSwap() ;
void size( void ) ;
void swapRows(int i1, int i2) { std::swap(this->array[i1], this->array[i2]); }
void printMat( void ) ;
};// end class matrix
template <class T>
Matx::~Matx(){
delete this->array ;
}// end ~matx()
请注意文件中还有一些函数,但错误在所有函数中都是一致的。我已经尝试用范围分辨率定义函数,没有,即Matx::~m
,但无济于事。非常感谢任何帮助!
答案 0 :(得分:1)
您应该像这样编写函数的定义:
template <class T>
Matx<T>::~Matx(){
delete this->array ;
}// end ~matx()
答案 1 :(得分:0)
这部分是错误的。
int ROWS, COLS ;
int colix[COLS], rowix[ROWS] ;
您正在定义大小为COLS和ROWS的数组。但这些是非const成员变量。你需要编译时表达式。例如:
static constexpr int ROWS = 4;
static constexpr int COLS = 4;