Пытаюсь объявить в классе (пусть это CBase) оператор, в его наследнике CDerived — такой же, и вызвать в нем старый оператор без явного указания namespace. Ну, чтобы виртуальность нормально работала — от этого наследника (CDerived) ведь тоже могут отнаследоваться и перекрыть ту, старую версию оператора, описанную в CBase.
Типа вот такого кода:
class CBase {
void operator() () {};
};
class CDerived : public CBase {
void operator() (int a) { this->operator() (); } //C2660:
// ...::operator`()'' : function does not take 0 arguments
};
Ну так VC7 не находит унаследованный оператор. Попробовал то же с обычными функциями с одинаковыми именами — тот же эффект. Возникает подозрение, что поиск перегруженных версий функции (оператора) осуществляется лишь в пределах данного наследника, а унаследованные методы в рассчет не берутся. Это так?
Slicer