メンバー関数のテンプレート部分特殊化
テンプレート プログラミングでは、部分特殊化により、特定のパラメーター値に合わせてクラスまたは関数を調整できます。ただし、メンバー関数の部分特殊化を実現するのは困難な場合があります。
根本的な問題
コード スニペットで発生したエラーは、メンバー関数のみを部分的に特殊化しようとしたことが原因です。クラス全体を特殊化せずにメンバー関数 (Deform) を実行します。 C では、メンバー関数で部分特殊化を実行するには、メンバー関数を含むクラスの完全な特殊化が必要です。
解決策
この問題を修正するには、部分特殊化を適用する必要があります。クラス全体に。この場合、修正されたコードは次のようになります。
template<typename T> class Object<T, 0> { 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; } };
nValue が 0 のクラス Object を部分的に特殊化することで、Deform のカスタマイズされた実装を実現できます。
以上がC でメンバー関数を部分的に特殊化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。