ホームページ > バックエンド開発 > C++ > 私の C コードが「エラー: 非クラス型 'MyClass ()()' である 'myObj' のメンバー 'function1' のリクエスト」をスローするのはなぜですか?

私の C コードが「エラー: 非クラス型 'MyClass ()()' である 'myObj' のメンバー 'function1' のリクエスト」をスローするのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-12 12:12:02
オリジナル
430 人が閲覧しました

Why Does My C   Code Throw an

混乱の解決: エラー「引数のないコンストラクター」について理解

エラー メッセージ「error: request for C コードのコンパイル中に、非クラス型 'MyClass ()()' のメンバー 'function1' が 'myObj' に存在する場合、困惑したかもしれません。このエラーをめぐる混乱を明確にしましょう。

この問題は、括弧付きの空のコンストラクター宣言のあいまいな構文に起因します。次の構文は引数なしでオブジェクトを定義しているように見えますが、

MyClass myObj();
ログイン後にコピー

言語標準では、このような構文は実際には関数宣言として解釈されることが規定されています。この曖昧さを避けるため、引数なしでコンストラクターを宣言するための正しい構文は次のとおりです。

MyClass myObj;
ログイン後にコピー
ログイン後にコピー

この代替構文は明示的にオブジェクト定義を示し、曖昧さを解決し、コンパイラーがメンバー関数 function1( ).

これはコンパイラの制限ではなく、C 言語標準への厳密な準拠です。標準では、構文があいまいな場合には、関数宣言が常にオブジェクト定義よりも優先されることが明確に指定されています。

したがって、このようなエラーを回避するには、引数なしでコンストラクターを宣言する場合は常に標準構文を使用するようにしてください。

MyClass myObj;
ログイン後にコピー
ログイン後にコピー

以上が私の C コードが「エラー: 非クラス型 'MyClass ()()' である 'myObj' のメンバー 'function1' のリクエスト」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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