【问题标题】:Invalid use of non static data member C++非静态数据成员 C++ 的无效使用
【发布时间】:2016-01-12 00:19:52
【问题描述】:

这是我的代码

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 的使用无效

我想做的是让我的对象 矩阵类并传递一个数组

【问题讨论】:

  • marray[][] 是什么意思?
  • 你在哪一行得到这个错误?
  • int i ,int j

标签: c++


【解决方案1】:

转换成

int marray[];

int *marray;

此外,要么使用 C 范例,要么使用 C++ 之一,但不要混合使用。

代替

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

使用

mymatrix first(testarray,2,2);

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

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

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

【讨论】:

  • 谢谢,但是 int i 和 int j 出现了问题。不过这个建议很有帮助
  • 哇,我删除了“:marray(m),i(rows),j(cols)”部分并应用了这个然后我工作了。非常感谢
猜你喜欢
  • 1970-01-01
  • 2023-03-12
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
  • 2017-09-12
相关资源
最近更新 更多