1

クラスが特定の型でインスタンス化されている場合にのみ使用できる関数を 1 つ作成することは可能ですか? (その型のクラス全体を書き換えずに?)

4

1 に答える 1

3

あなたが何を求めているかを理解していれば、他の関数を含む基本クラスを使用し、その基本クラスから派生したテンプレートと特殊化を使用して、必要な追加機能を追加する特殊化を使用する可能性があります。

struct X {
    int x() { return 1; }
};

template<class T>
struct Y : public X {
};

template<>
struct Y<int> : public X {
    int y() { return 2; }
};

int main() {
    Y<long> y;
    y.x();
    Y<int> z;
    z.y();
    return 0;
}
于 2012-04-09T23:05:35.043 に答える