ホームページ > バックエンド開発 > C++ > C クラスを使用すると「クラス型ではない '...' のメンバー '...' に対するリクエスト」が発生するのはなぜですか?

C クラスを使用すると「クラス型ではない '...' のメンバー '...' に対するリクエスト」が発生するのはなぜですか?

Linda Hamilton
リリース: 2024-11-30 20:19:11
オリジナル
820 人が閲覧しました

Why Does

エラーの理解: 「クラス型ではない '...' のメンバー '...' のリクエスト」

クラスを利用しようとしたときおよびそのメンバー関数を使用すると、「クラス型ではない '...' のメンバー '...' が要求されました」というエラーが頻繁に発生します。その原因を理解するには、その原因となったソース コードを解析することが重要です。

この例では、クラス Foo は 2 つのコンストラクターを持っています。1 つは引数を受け入れず、もう 1 つは整数の引数を受け入れます。引数を指定したコンストラクターを使用してオブジェクトをインスタンス化すると、実行は予想どおりに進行します。ただし、引数なしのコンストラクターを使用すると、前述のエラーが発生します。

問題の解決

このエラーは、構文が間違っていることが原因です。これを修正するには、次のコード スニペットを使用する必要があります:

Foo foo2();
ログイン後にコピー

上記のコードを次のように置き換えます:

Foo foo2;
ログイン後にコピー

コンパイラは構文を誤って解釈します

Foo foo2()
ログイン後にコピー

戻り値の型が「Foo」である「foo2」という名前の関数の宣言として。ただし、これは意図された機能ではありません。

曖昧さの回避

構文を修正すると、「オーバーロードされた 'Foo()' の呼び出しがあいまいです」という別のエラーが発生する可能性があります。これは、コンパイラが Foo の複数のオーバーロードされたコンストラクターを検出したために発生します。これを解決するには、以下に示すように、使用するコンストラクターを明示的に指定します。

Foo foo2 = Foo();
ログイン後にコピー

以上がC クラスを使用すると「クラス型ではない '...' のメンバー '...' に対するリクエスト」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート