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 ++.