1

我是 Qt 新手,并开始使用此处找到的演示程序。我已将类 AddressBook 重命名为 Dialog。它编译并执行得很好。我想将自己的代码添加到示例中,因此我添加了一个新标签作为该类的私有成员:

private:
QCheckBox *native;
QLabel *integerLabel;
QLabel *doubleLabel;
QLabel *itemLabel;
...
QLabel *questionLabel;
QLabel *warningLabel;
QLabel *errorLabel;
QLabel *newLabel;     // <== This is new
QErrorMessage *errorMessageDialog;

在构造函数 Dialog::Dialog 我(尝试)为变量分配内存:

warningLabel = new QLabel;
warningLabel->setFrameStyle(frameStyle);
QPushButton *warningButton = new QPushButton(tr("QMessageBox::&warning()"));

errorLabel = new QLabel;
errorLabel->setFrameStyle(frameStyle);
QPushButton *errorButton =
new QPushButton(tr("QErrorMessage::showM&essage()"));

newLabel = new QLabel;    // <== Error
newLabel->setFrameStyle(frameStyle);

据我所知,通过复制和粘贴 *errorLabel 并更改其名称,我已在此类中正确创建并分配了变量。然而编译器发出错误:

错误:未在此范围内声明“newLabel”

当我单击错误时,它会将我带到构造函数中的“新”行。如果我在构造函数中注释掉引用 newLabel 的两行,程序就会编译。在我看来,它在这个范围内。我在这里犯了什么错误?我们将来如何防止这些类型的问题?(我已经搜索了数十个类似的帖子,并且能够在 30 秒或更短的时间内识别出 OP 的错误,但我找不到自己的错误,也找不到在类中声明变量但在构造函数中找不到的帖子。)

在此先感谢,凯尔

4

1 回答 1

1

我已经解决了这个问题。即使这不是我期望的答案,我也会发布这个答案,以防万一它对社区的其他人有所帮助。

我创建了一个新项目并将 cpp/h 文件从非工作项目复制到新项目中。新项目编译。有了新项目,我现在可以向类添加其他私有变量并在构造函数(以及 IDE)中访问它们。我可以轻松访问所有参数以显示项目相同,但一个编译而另一个不编译。我只能得出结论,项目本身不知何故被破坏了(这不会激发信心)。

虽然我松了一口气,这不是我的愚蠢的程序错误,但我对无法找到并修复项目文件中的任何问题感到失望。感谢所有提供建议的人。

于 2013-05-14T15:04:51.217 回答