C ++ Доступ к переменной класса из другого класса - PullRequest
0 голосов
/ 11 января 2020

У меня есть класс с именем MineData:

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

, и у меня есть класс с именем Grid:

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

, поэтому я хочу получить доступ к переменной данных в классе Grid из класса MineData , но когда я делаю

mineData.data

, я получаю сообщение об ошибке:

класс 'MineData' не имеет члена 'data'

Что такое Я делаю не так?

Ответы [ 2 ]

3 голосов
/ 11 января 2020

В настоящее время вы объявили data как локальную переменную в конструкторе MineData. Вместо этого вам нужно сделать его переменной-членом. Затем вы можете создать его в списке инициализатора.

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

public:
  vector<vector<int>> data;
  MineData(): data(col, vector<int>(row, 0)) { }
};
0 голосов
/ 11 января 2020

Вектор data необходимо добавить как поле класса. Теперь он создается в конструкторе класса 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 
}
...