演示程序错误:''未在此范围内声明

时间:2013-05-13 17:31:01

标签: c++ qt netbeans scope qlabel

我是Qt的新手并且已经开始使用here的演示程序。我已将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中I(尝试)为变量分配内存:

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'

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

提前致谢, 凯尔

1 个答案:

答案 0 :(得分:1)

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

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

虽然我感到宽慰,但这对我来说并不是一个愚蠢的程序错误,我很失望无法找到并修复项目文件的任何错误。感谢所有提出建议的人。