C++ 编译器未从基类中找到方法

C++ 编译器未从基类中找到方法,c++,visual-studio,oop,C++,Visual Studio,Oop,我在派生类中的虚方法有问题。下面是我的简化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

我在派生类中的虚方法有问题。下面是我的简化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);
我希望编译器也能为我的DerivedClass找到并调用Base::acceptMyVisitor1。显然这不起作用,但我不明白为什么。有什么想法吗

谢谢

Paul

DerivedClass的accept成员隐藏具有相同名称的基类的任何成员,即使它们具有不同的签名。要包含它们,请在DerivedClass的定义中添加以下内容:

我假设DerivedClass确实从Base派生;您的代码段没有明确说明这一点。

DerivedClass的accept成员隐藏具有相同名称的基类的任何成员,即使它们具有不同的签名。要包含它们,请在DerivedClass的定义中添加以下内容:


我假设DerivedClass确实从Base派生;您的代码段没有明确说明这一点。

派生类真的从基类派生吗?这是公共继承吗?基类中的方法也是公共的吗?您可能应该提供一些实际编译的代码。看起来DerivedClass实际上不是从基类派生的,但是由于提供的代码不是C++,所以我们不能确定。请发布实际代码。你确定你使用了公共继承吗?对不起。它应该是:class-DerivedClass:public-based派生类真的从基类派生吗?这是公共继承吗?基类中的方法也是公共的吗?您可能应该提供一些实际编译的代码。看起来DerivedClass实际上不是从基类派生的,但是由于提供的代码不是C++,所以我们不能确定。请发布实际代码。你确定你使用了公共继承吗?对不起。它应该是:class-DerivedClass:public-BaseThis-worked。我不知道这个关键字的用法。谢谢,这很有效。我不知道这个关键字的用法。非常感谢。
using Base::accept;