Я испытал это с производным классом, но то же самое с базовым классом 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 )
Так не должны ли первые два примера делать то же самое? И почему компилятор жалуется на вторую строку, а не на конструктор.
Спасибо за просветление, советы для дальнейшего чтения по теме очень приветствуются