クラスを利用しようとしたときおよびそのメンバー関数を使用すると、「クラス型ではない '...' のメンバー '...' が要求されました」というエラーが頻繁に発生します。その原因を理解するには、その原因となったソース コードを解析することが重要です。
この例では、クラス Foo は 2 つのコンストラクターを持っています。1 つは引数を受け入れず、もう 1 つは整数の引数を受け入れます。引数を指定したコンストラクターを使用してオブジェクトをインスタンス化すると、実行は予想どおりに進行します。ただし、引数なしのコンストラクターを使用すると、前述のエラーが発生します。
このエラーは、構文が間違っていることが原因です。これを修正するには、次のコード スニペットを使用する必要があります:
Foo foo2();
上記のコードを次のように置き換えます:
Foo foo2;
コンパイラは構文を誤って解釈します
Foo foo2()
戻り値の型が「Foo」である「foo2」という名前の関数の宣言として。ただし、これは意図された機能ではありません。
構文を修正すると、「オーバーロードされた 'Foo()' の呼び出しがあいまいです」という別のエラーが発生する可能性があります。これは、コンパイラが Foo の複数のオーバーロードされたコンストラクターを検出したために発生します。これを解決するには、以下に示すように、使用するコンストラクターを明示的に指定します。
Foo foo2 = Foo();
以上がC クラスを使用すると「クラス型ではない '...' のメンバー '...' に対するリクエスト」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。