gpt4 book ai didi

c++ - 没有参数的 QDialog 显式构造函数 - 如何正确使用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:16:05 25 4
gpt4 key购买 nike

我在派生类中遇到过这种情况,但它与 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 的函数,它什么都不接受并返回一个 QDialog

如果这让您感到惊讶,假设您将变量命名为 f 而不是 dialog。我们得到了什么?

QDialog f();

现在看起来更像是一个函数,不是吗? :)

你需要

QDialog对话框;

总是,当某些东西可以被解释为声明和其他东西时,编译器总是解决有利于声明的歧义

关于c++ - 没有参数的 QDialog 显式构造函数 - 如何正确使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6478204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com