无效使用非静态数据成员C ++

时间:2015-10-14 04:00:15

标签: c++

这是我的代码

的main.cpp

#include <iostream>
#include "header.h"
#include "source.cpp"

using namespace std;

int main()
{
    cout << "Hello world!" << endl;
    int testarray[]={1,3,5,7};
    mymatrix* first=new mymatrix(testarray,2,2);
    return 0;
}

和header.h

using namespace std;
#include <iostream>
#include <string>

class mymatrix{
public:
    int i;
    int j;
    int marray[];

    mymatrix(int m[],int rows,int cols ) : marray(m),i(rows),j(cols)
    {
        cout<<"this is for testings ";
    }
    mymatrix()
    {};
    ~mymatrix(){
    // delete[] marray;
    };


};

我收到此错误:无效使用非静态数据成员mymatrix :: i

我想做的就是成为我的对象 矩阵类并传递数组

1 个答案:

答案 0 :(得分:0)

转换它
int marray[];

int *marray;

此外,要么使用C范例,要么使用C ++而不是混合。

而不是

mymatrix* first=new mymatrix(testarray,2,2);

使用

mymatrix first(testarray,2,2);

让编译器分配和释放内存而不是你。

如果您对所使用的C ++库没有限制,请考虑使用std::vector库来管理动态数组。

管理对象内存的Instad,专门在构造函数和析构函数内部管理它。