C のテンプレート クラス内でメンバー関数の部分特殊化を実現するにはどうすればよいでしょうか?

Mary-Kate Olsen
リリース: 2024-11-16 10:46:03
オリジナル
600 人が閲覧しました

How can you achieve partial specialization of a member function within a template class in C  ?

クラス メンバー関数の部分特殊化

通常の関数とは異なり、テンプレート クラス内のメンバー関数のみを部分特殊化することは C では許可されません。代わりに、クラス全体を部分的に特殊化する必要があります。

メンバー関数の部分的な特殊化を実現するには、次の手順を実行する必要があります。

  1. 完全に特殊化されたテンプレート クラスを宣言します。特殊なメンバー関数を必要とするテンプレート パラメーターの特定の値。
  2. 特殊なクラス テンプレート内で、目的のメンバーを定義します。 function.

たとえば、nValue が 0 に等しい特定のコードで Deform() メンバー関数の部分特殊化を作成するには、次のコードは元のコードを修正する方法を示しています。

// Partial specialization of the Object class for nValue = 0
template <>
class Object<int, 0>
{
private:
    int m_t;
    Object();
public:
    Object(int t): m_t(t) {}
    int Get() { return m_t; }
    Object& Deform()
    {
        std::cout << "Specialized\n";
        m_t = -1;
        return *this;
    }
};
ログイン後にコピー

これらの変更により、コードは nValue が 0 に等しい Deform() メンバー関数を部分的に正しく特殊化するようになりました。

以上がC のテンプレート クラス内でメンバー関数の部分特殊化を実現するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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