C++ 如何从另一个类读取结构成员
我的主窗口类中有一个结构:C++ 如何从另一个类读取结构成员,c++,qt,C++,Qt,我的主窗口类中有一个结构: #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
#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
单击btn1会打开另一个窗口,我想通过单击btn2读取结构成员值。这是我的代码:
void Dialog::on_btn2_clicked()
{
qDebug()<<MainWindow::ret_func().ID;//->this line has error
}
错误:
错误:无法调用成员函数“MainWindow::properties”
主窗口::ret_func'无对象
qDebugMainWindow::ret_funcy不是静态成员,这就是编译器显示错误的原因:无法调用成员函数。。毫无目的
您需要有MainWindow的实例才能对其应用ret_Fun
如果只有一个MainWindow,则可以将该类修改为singleton,以便能够执行MainWindow::instance.ret_func.ID;主窗口::ret_func.ID 欢迎来到堆栈溢出!作为一个新用户,请接受并阅读。关于你的问题,读者需要过滤的信息太多,这让你的问题变得糟糕。在这里发布之前,请从您的代码中提取a!谢谢你的回复。但你的回答让我更加困惑。我是个新手,不知道什么是单身!在网上搜索但无法理解。你能编辑我的代码吗?我英语不好也是另一个原因。singleton是一个只有一个实例的类,而静态成员通常命名为instance并返回该实例。但是我不知道你有多少个MainWindow实例,如果它可以是一个单例,那么没有其他方法了?有可能让“MainWindow::ret_func”成为一个静态成员来消除错误吗?@rezamoslemi你也可以在你的类对话框中添加一个方法,给它一个MainWindow::on_btn1_单击的实例,例如执行Dialog->setWindowthis;在_dialog->exec;之前;。但坦率地说,你的做法在全球范围内是非常重要的strange@rezamoslemi如果“MainWindow::ret_func”是静态的,则无法访问非静态成员,只需推送问题
void Dialog::on_btn2_clicked()
{
qDebug()<<MainWindow::ret_func().ID;//->this line has error
}