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()’
...
Run Code Online (Sandbox Code Playgroud)
我怀疑问题来自于两个虚函数具有相同的名称,但参数签名不同.我想知道的是,这是一个特定于g ++的错误消息,如何实现vtable,或者它是基于C++标准的错误.