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 )
所以前两个示例不应该完全一样吗?以及为什么编译器在第二行而不是在构造函数中抱怨。
感谢您的启发,非常欢迎您进一步阅读该主题的提示
没有找到相关结果
已邀请:
2 个回复
逝媳蘑贩茄
这将声明一个名为dialog的函数,该函数不执行任何操作并返回ѭ6 如果这让您感到惊讶,请假设您将变量f命名为“对话”。我们得到什么?
现在看起来更像一个函数,不是吗? :) 你需要
总是,当某些东西可以解释为声明,而其他东西时,编译器总是解决含糊不清的声明
磁辫覆氓
是使用默认构造函数在堆栈上创建ѭ6的正确语法。