gpt4 book ai didi

c++ - 同名虚成员函数的继承

转载 作者:搜寻专家 更新时间:2023-10-31 00:46:40 24 4
gpt4 key购买 nike

class A
{
A() {};
virtual ~A() {};
virtual void Start() {};
virtual void Start(float a) {};
};

class B : public A
{ };

class C : public A
{
virtual void Start(float a) {};
}


...
B BObj;
BObj.Start(); // -> fine, no complain from g++
...

...
C CObj;
CObj.Start(); // -> not fine -> error: no matching function for call to ‘C::Start()’
...

我怀疑问题出在两个虚函数具有相同的名称,但参数签名不同。我想知道的是,这是一个特定于 g++ 的错误消息,它是如何实现 vtable 的,或者它是一个基于 C++ 标准的错误。

最佳答案

重载函数隐藏了所有其他 Start 函数。要使用它们,请添加 using A::Start:

class C : public A
{
public:
using A::Start;
virtual void Start(float a) {};
}

还要在 A 中公开 Start

编辑: Here你可以找到派生类隐藏基类函数的原因。

关于c++ - 同名虚成员函数的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4891139/

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