C のクラス メンバー関数の部分特殊化
部分特殊化は、クラスまたはクラスの特殊なバージョンを作成できる C テンプレートの強力な手法です。特定のタイプの関数。クラス メンバー関数の部分特殊化を試みる場合、クラス全体の特殊化が必要であることに注意することが重要です。
提供されたコードでは、目標は、クラス Object の Deform() メンバー関数を部分的に特殊化することです。 nValue は 0 です。ただし、コードはクラスを特殊化せずにメンバー関数のみを部分的に特殊化しようとします。そのため、次のエラーが発生します。「PartialSpecific_MemberFu.cpp(17): エラー: テンプレート引数リストはパラメータ リスト Object
このエラーを修正するには、nValue が 0 に等しいようにクラス全体を特殊化する必要があります。これには、特殊化されたクラス Object
templateclass Object { private: T m_t; Object(); public: Object(T t): m_t(t) {} T Get() { return m_t; } Object& Deform() { std::cout << "Spec\n"; m_t = -1; return *this; } }; この変更により、Deform() メンバー関数の部分的な特殊化が意図したとおりに機能します。この正しいアプローチにより、nValue が 0 の場合にクラス全体が特殊化され、その場合に特化したカスタマイズされた動作が可能になります。
以上がC でクラス メンバー関数を部分的に特殊化するには、クラス全体を特殊化する必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。