Как читать элементы структуры из другого класса - PullRequest
0 голосов
/ 05 января 2019

У меня есть структура в моем классе главного окна:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include "dialog.h"
#include <QMainWindow>

namespace Ui {
  class MainWindow;
}

class MainWindow : public QMainWindow
{
  Q_OBJECT

  public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

    struct properties{
      int ID = -1;
    };

    properties ret_func();
  private slots:
    void on_btn1_clicked();

  private:
    Ui::MainWindow *ui;
    properties _properties;
    Dialog *_dialog;
};

#endif // MAINWINDOW_H

Я установил его значение в mainwindow.cpp, нажав btn1:

MainWindow::properties MainWindow::ret_func()
{
  return _properties;
}

void MainWindow::on_btn1_clicked()
{
  _properties.ID = ui->lineEdit->text().toInt();
  qDebug()<<_properties.ID;
  _dialog->exec();
}

, нажав btn1, открывается другое окно, и я хочу прочитать значение члена структуры, нажав btn2. Это мой код:

void Dialog::on_btn2_clicked()
{
    qDebug()<<MainWindow::ret_func().ID;//->this line has error
}

Ошибка:

error: cannot call member function 'MainWindow::properties 
MainWindow::ret_func()' without object
 qDebug()<<MainWindow::ret_func().ID;
                                ^

Я прочитал некоторые темы с похожими проблемами, но не смог найти решение пожалуйста, помогите мне

1 Ответ

0 голосов
/ 05 января 2019

MainWindow::ret_func() не является статическим членом, поэтому компилятор сообщает: error: невозможно вызвать функцию-член .. без объекта

Вам нужно иметь экземпляр MainWindow , чтобы применить к нему ret_fun.

Если у вас есть только одно MainWindow , вы можете изменить этот класс на singleton , чтобы иметь возможность MainWindow::instance().ret_func().ID;MainWindow::ret_func().ID;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...