C では、静的と仮想の両方のメンバー関数を直接定義することはできません。 「static virtual member()」を宣言しようとすると、コンパイラはエラーを発行します。ただし、同等の機能を実現する手法はあります。
静的仮想メンバー関数の動作をエミュレートするには、次のアプローチを検討してください。
<code class="cpp">struct Object { struct TypeInformation; static const TypeInformation &GetTypeInformation() { return GetTypeInformationImpl(); } protected: virtual const TypeInformation &GetTypeInformationImpl() const = 0; };</code>
ここでは、GetTypeInformation() 関数は静的として定義されており、TypeInformation 型への定数参照を返します。ただし、この関数の実際の実装は、保護された仮想関数 GetTypeInformationImpl() を介して派生クラスに委任されます。
以上がC では静的メンバー関数を仮想化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。