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的正确语法。     

要回复问题请先登录注册