「エラー: 非クラス型である '...' のメンバー '...' のリクエスト」を解決します
C で「エラー: 非クラス型である '...' のメンバー '...' に対する要求」というエラー メッセージが発生した場合、多くの場合、オブジェクトのインスタンス化とインスタンス化に問題があることを示しています。クラスメンバーのアクセス。この問題に対処するために、提供されたコードとエラーの根本原因を詳しく調べてみましょう。
このコードは、引数をとらないコンストラクターと引数を 1 つ取るコンストラクターの 2 つのコンストラクターを持つクラス Foo を定義します。目的は、両方のコンストラクターを使用して Foo のオブジェクトを作成することです。ただし、引数なしのコンストラクターを使用してオブジェクトを作成しようとすると、エラーが発生します。
検査すると、問題は次の行にあります。
Foo foo2();
コンパイラは、この行を次のように解釈します。名前が「foo2」、戻り値の型が「Foo」の関数宣言。ただし、本来の目的は、デフォルトのコンストラクターを使用してクラス Foo のオブジェクトを宣言し、インスタンス化することです。これを解決するには、構文を次のように変更する必要があります。
Foo foo2;
括弧を削除するだけで、コンパイラはその行をオブジェクトの宣言とインスタンス化として正しく解釈し、デフォルトのコンストラクターを使用して foo2 オブジェクトを初期化します。 .
この変更により、コードが期待どおりにコンパイルおよび実行できるようになります。両方のコンストラクターを使用してオブジェクトを作成できるようになり、メンバー関数に問題なくアクセスできるようになりました。したがって、C プログラミングでこの種のエラーを回避するには、オブジェクトの宣言とインスタンス化に適切な構文を使用することを忘れないでください。
以上が「エラー: 非クラス型である '...' のメンバー '...' に対する要求」が C で発生する理由とその修正方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。