ホームページ > バックエンド開発 > C++ > 「エラー: 非クラス型である '...' のメンバー '...' に対する要求」が C で発生する理由とその修正方法

「エラー: 非クラス型である '...' のメンバー '...' に対する要求」が C で発生する理由とその修正方法

Mary-Kate Olsen
リリース: 2024-12-05 06:22:11
オリジナル
823 人が閲覧しました

Why Does

「エラー: 非クラス型である '...' のメンバー '...' のリクエスト」を解決します

C で「エラー: 非クラス型である '...' のメンバー '...' に対する要求」というエラー メッセージが発生した場合、多くの場合、オブジェクトのインスタンス化とインスタンス化に問題があることを示しています。クラスメンバーのアクセス。この問題に対処するために、提供されたコードとエラーの根本原因を詳しく調べてみましょう。

このコードは、引数をとらないコンストラクターと引数を 1 つ取るコンストラクターの 2 つのコンストラクターを持つクラス Foo を定義します。目的は、両方のコンストラクターを使用して Foo のオブジェクトを作成することです。ただし、引数なしのコンストラクターを使用してオブジェクトを作成しようとすると、エラーが発生します。

検査すると、問題は次の行にあります。

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

コンパイラは、この行を次のように解釈します。名前が「foo2」、戻り値の型が「Foo」の関数宣言。ただし、本来の目的は、デフォルトのコンストラクターを使用してクラス Foo のオブジェクトを宣言し、インスタンス化することです。これを解決するには、構文を次のように変更する必要があります。

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

括弧を削除するだけで、コンパイラはその行をオブジェクトの宣言とインスタンス化として正しく解釈し、デフォルトのコンストラクターを使用して foo2 オブジェクトを初期化します。 .

この変更により、コードが期待どおりにコンパイルおよび実行できるようになります。両方のコンストラクターを使用してオブジェクトを作成できるようになり、メンバー関数に問題なくアクセスできるようになりました。したがって、C プログラミングでこの種のエラーを回避するには、オブジェクトの宣言とインスタンス化に適切な構文を使用することを忘れないでください。

以上が「エラー: 非クラス型である '...' のメンバー '...' に対する要求」が C で発生する理由とその修正方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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