简体   繁体   English

C++ 从另一个类访问类变量

[英]C++ Accessing class variable from another class

I have a class called MineData:我有一个名为 MineData 的类:

class MineData {
private:
    int row = 10;
    int col = 20;
public:
    MineData() {
        std::vector<std::vector<int>> data (col, std::vector<int>(row, 0));
    }
}

and I have a class called Grid:我有一个名为 Grid 的类:

class Grid : public QWidget {
    MineData mineData;
    QPushButton *btn = new QPushButton(mineData.data, this);
}

so I want to access the data variable in Grid class from MineData class, but when I do所以我想从 MineData 类访问 Grid 类中的数据变量,但是当我这样做时

mineData.data

I get an error:我收到一个错误:

class 'MineData' does not have 'data' member “MineData”类没有“数据”成员

What am I doing wrong?我究竟做错了什么?

You have currently declared data as a local variable in MineData 's constructor.您当前已在MineData的构造函数MineData data声明为局部变量。 Instead, you need to make it a member variable.相反,您需要将其设为成员变量。 Then, you can instantiate it in the initializer list.然后,您可以在初始化列表中实例化它。

class MineData {
private:
  int row = 10;
  int col = 20;

public:
  vector<vector<int>> data;
  MineData(): data(col, vector<int>(row, 0)) { }
};

The vector data needs to be added as a class field.需要将矢量data添加为类字段。 Now it is constructed in the MineData class constructor as a temporary variable and it is removed after the constructor function is finished.现在它在MineData类构造函数中作为临时变量构造,并在构造函数完成后将其移除。

class MineData {
private:
    int row = 10;
    int col = 20;
public:
    MineData() {
        data.resize(col, std::vector<int>(row, 0)); 
    }
std::vector<std::vector<int>> data 
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM