class A {
virtual void operator()(int a, int b) { cout << a + b << endl; }
};
class B : A {
void operator()(int a, int b) { cout << a - b << endl; }
};
void f(int a, int b, const A &obj) {
obj(a, b);
}
int main() {
int a = 5, b = 3;;
B obj;
f(a, b, obj); // should give 2, but gives 8 (uses A's function even if it's virtual)
}
クラス B の operator() は使用しませんが、クラス A の 1 つを使用します (仮想として設定されているため、B の op() を使用する必要があります)。それを修正する方法はありますか?
tl;dr - 基本クラスから継承する特定のクラスのオブジェクト (最も基本的なクラスである型) をパラメーターとして指定する場合、基本演算子ではなく特定の演算子を使用したいと考えています。