Нет, вы не можете этого сделать.Тип класса является частью типа функции-члена оператора.
Тип A::operator()()
отличается от типа B::operator()()
.Первый тип int (A::*)()
, а второй тип int (B::*)()
.Эти типы совершенно не связаны.
Самое близкое, что вы можете получить, это использовать что-то вроде обёртки полиморфной функции C ++ 0x function
(встречается в C ++ 0x, C ++ TR1 и Boost) и с помощьюbind
для привязки указателя функции-члена к экземпляру класса:
std::function<int()> _p;
A a;
_p = std::bind(&A::operator(), a);
std::cout << _p();
B b;
_p = std::bind(&B::operator(), b);
std::cout << _p();