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

Invalid use of non static data member C++

本文关键字:无效 数据成员 静态 c++      更新时间:2023-10-16

这是我的代码

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

我想做的是创建一个我的并传递一个数组

转换
int marray[];

int *marray;

另外,要么使用C范例,要么使用c++范例,但不要混合使用。

代替

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

mymatrix first(testarray,2,2);

让编译器替你分配和释放内存。

如果你对使用的c++库没有限制,可以考虑使用std::vector库来管理你的动态数组。

不是在对象外部管理内存,而是在对象内部管理内存,特别是在构造函数和析构函数内部。