派生クラスでこれを経験しましたが、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 つの例はまったく同じではないでしょうか? そして、コンパイラーがコンストラクターの行ではなく、2行目に文句を言うのはなぜですか。
啓発をありがとう、トピックに関するさらなる読書へのヒントは大歓迎です