Eclipse C ++:未找到类,命名空间,枚举

时间:2017-09-02 10:05:01

标签: c++ eclipse-cdt

问候并提前感谢你!

我在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,但无济于事。非常感谢任何帮助!

2 个答案:

答案 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;