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 を参照するコンストラクターの 2 行をコメントアウトすると、プログラムはコンパイルされます。それは私の心の中でこの範囲にあります。私はここでどんな間違いを犯していますか?将来、これらのタイプの問題をどのように防ぐことができますか? (私は数十の同様の投稿を検索し、30秒以内にOPの間違いを特定できましたが、自分の間違いを見つけることも、変数がクラスで宣言されているがコンストラクターで見つからない投稿を見つけることもできません。)

前もってありがとう、カイル

4

1 に答える 1