1

テンプレート技術で存在する可能性のあるメンバー関数を呼び出すにはどうすればよいですか? クラスが任意であるため、仮想メソッドを使用したくありません。

例えば:

class A {
    void setValue(int value);
};

Aclassの setValue が存在する場合はそれを呼び出し、それ以外の場合は何もしないようにテンプレートを定義する方法。

テンプレートは次のようなものです。

template <typename T>
struct call_if_exist {
    void invokeOrNot(T& a, int value){ // EXISTING: setValue
        a.setValue(value);
    }
}
template <typename T>
struct call_if_exist {
    void invokeOrNot(T& a, int value){ // NOT EXISTING: do nothing
    }
}

チェックではなく、呼び出すことです。

4

1 に答える 1