ホームページ >バックエンド開発 >C++ >C コンストラクター構文: `Foo foo2();` がエラーを引き起こすのはなぜですか?

C コンストラクター構文: `Foo foo2();` がエラーを引き起こすのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-30 14:13:16386ブラウズ

C   Constructor Syntax: Why Does `Foo foo2();` Cause an Error?

エラー: 非クラス型 '非クラス型' のメンバーを要求しています

C でオブジェクトを宣言するときは、両方のコンストラクターの構文が正しいこと。提供されたコードでは、引数なしのコンストラクターを使用してオブジェクトを作成しようとすると、エラーが発生します:

Foo foo2();

この構文は関数宣言に似ているため正しくありません。そのため、コンパイラーはそのように解釈します。 。引数なしのコンストラクターを使用したオブジェクト宣言の正しい構文は次のとおりです。

Foo foo2;

括弧を削除すると、コンパイラーは foo2 をクラス Foo のオブジェクトとして正しく認識します。

あるいは、次の場合わかりやすくするために括弧を使用したい場合は、コンストラクター引数が含まれていることを確認してください:

Foo foo2(1); // Explicitly pass the default argument of 1 to the no-argument constructor

以上がC コンストラクター構文: `Foo foo2();` がエラーを引き起こすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。