Is the following code the correct way to call a base class’s overridden function from a derived class’s function?:
#include "stdafx.h"
#include <iostream>
class BaseClass
{
public:
virtual void foo()
{
std::cout << "BaseClass::foo()" << std::endl;
}
};
class DerivedClass : BaseClass
{
public:
virtual void foo()
{
__super::foo();
std::cout << "DerivedClass::foo()" << std::endl;
}
};
int main()
{
DerivedClass* dc = new DerivedClass();
dc->foo();
delete dc;
return 0;
}
No, your call using
__super::foo()is employing a Microsoft language extension.Instead you can write
BaseClass::foo().Or if you have a
typedef BaseClass Base, thenBase::foo().Cheers & hth.,