Sorry if it is a duplicated or a silly question.
But i can't compile the following c++ code; (VS2017 Update 15.7.5)
class IInterface
{
public:
virtual void FnX(int) = 0;
virtual void FnX(int, int) = 0;
virtual void FnY(int) = 0;
};
class CClassBase : public IInterface
{
public:
virtual void FnX(int) override {}
virtual void FnX(int, int) override final {}
virtual void FnY(int) override final {}
};
class CClassX : public CClassBase
{
public:
virtual void FnX(int) override {}
};
void Foo()
{
CClassX x;
x.FnY(1);
x.FnX(2);
static_cast<CClassBase &>(x).FnX(3, 4);
static_cast<IInterface &>(x).FnX(5, 6);
x.FnX(7, 8);
}
Last line x.FnX(7, 8);
Doesn't compile.
Compile error:
error C2660: 'CClassX::FnX': function does not take 2 arguments
Can anyone please explain that, why it does not compile? or Why function overloading FnX(int, int)
could not found?