如何解决QDialog不带参数的显式构造函数-如何正确使用?
| 我在派生类中体验到了这一点,但是在QDialog基类中却是如此: 当我做QDialog dialog();
dialog.exec();
编译器抱怨
J:\\...\\mainwindow.cpp:-1: In member function \'void MainWindow::on_viewButton_pressed()\':
J:\\...\\mainwindow.cpp:72: Fehler:request for member \'exec\' in \'dialog\',which is of non-class type \'QDialog()\'
这与正在使用的构造函数有关,因为当我这样做时
QDialog dialog(0);
dialog.exec();
该代码编译没有错误。
这也有效:
QDialog *dial = new QDialog();
dial->exec();
所以。是否由于显式构造函数?
文档说它的定义是
QDialog::QDialog ( QWidget * parent = 0,Qt::WindowFlags f = 0 )
所以前两个示例不应该完全一样吗?以及为什么编译器在第二行而不是在构造函数中抱怨。
感谢您的启发,非常欢迎您进一步阅读该主题的提示
解决方法
QDialog dialog();
这将声明一个名为dialog的函数,该函数不执行任何操作并返回ѭ6
如果这让您感到惊讶,请假设您将变量f命名为“对话”。我们得到什么?
QDialog f();
现在看起来更像一个函数,不是吗? :)
你需要
QDialog dialog;
总是,当某些东西可以解释为声明,而其他东西时,编译器总是解决含糊不清的声明
, QDialog dialog;
是使用默认构造函数在堆栈上创建ѭ6的正确语法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。