gpt4 book ai didi

c++ - 编译器找不到基类的方法

转载 作者:行者123 更新时间:2023-11-30 02:11:40 25 4
gpt4 key购买 nike

我在派生类中的虚拟方法有问题。这是我的(简化的)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::accept(MyVisitor1)。显然这是行不通的,但我不明白为什么。有什么想法吗?

谢谢,

保罗

最佳答案

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

using Base::accept;

(我假设 DerivedClass 确实派生自 Base;您的代码片段没有明确说明)。

关于c++ - 编译器找不到基类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3060776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com