この記事では、配置規則にもかかわらず、インライン メンバー関数を .cpp ファイルに実装するというジレンマに対処します。
以下のコード スニペットで示されているように、問題は循環インクルージョンから発生します。
<code class="cpp">// File A.h #include "B.h" class A { B b; };</code>
<code class="cpp">// File B.h #include "A.h" // forward declaration class B { inline A getA(); };</code>
循環依存関係により、getA() の実装は次のとおりです。
<code class="cpp">// File B.cpp #include "B.h" #include "A.h" inline A B::getA() { return A(); }</code>
コンパイラはインライン getA を実行しますか?
いいえ、getA() が B.cpp 自体内で使用されている場合を除きます。
インライン キーワードの重要性
クラス本体の外側の定義内の inline キーワードが最も重要です。
インラインを定義する別の方法.cpp ファイル内のメンバー関数
残念ながら、インライン メンバー関数の定義を .cpp ファイルに配置する別の方法はありません。標準では、関数が呼び出される場所に関係なく、コンパイラーが関数定義を参照する必要があります。
以上が.cpp ファイルで定義されたメンバー関数をインライン化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。