У меня проблема с моими виртуальными методами в производном классе.Вот мои (упрощенные) классы C ++.
class Base
virtual method accept( MyVisitor1* v ) { /*implementation is here*/ };
virtual method accept( MyVisitor2* v ) { /*implementation is here*/ };
virtual method accept( MyVisitor3* v ) { /*implementation is here*/ };
class DerivedClass
virtual method accept( MyVisitor2* v ) { /*implementation is here*/ };
При следующем использовании VS 2005 выдаст: «ошибка C2664:« DerivedClass :: accept »: невозможно преобразовать параметр 1 из« Visitor1 * »в« Visitor2 »* '».
DerivedClass c;
MyVisitor1 v1;
c.accept(v1);
Я ожидал, что компилятор найдет и вызовет Base :: accept (MyVisitor1) для моего DerivedClass.Очевидно, это не работает, но я не понимаю, почему.Есть идеи?
Спасибо,
Пол