Something I don't get it:
Say we have:
ref class Base {
virtual void SomeVirtualFunc tion()
{Console::Write Line(L"Base");}
public:
void SomeAccessibleF unction()
{SomeVirtualFun ction();}
};
ref class Derived : public Base {
virtual void SomeVirtualFunc tion()
{Console::Write Line(L"Derived" );}
};
int main(array<Syst em::String ^> ^args)
{
Base^ handle = gcnew Derived();
handle->SomeAccessible Function();
return 0;
}
I would expect to get "Derived" as the result, right? However, I get
"Base", and strange warnings during compilation:
".\PrivateVirtu al.cpp(8) : warning C4486: 'Base::SomeVirt ualFunction' :
a private virtual method of a ref class or value class should be marked
'sealed'
..\PrivateVirtu al.cpp(16) : warning C4486:
'Derived::SomeV irtualFunction' : a private virtual method of a ref
class or value class should be marked 'sealed'
"
If I try explicit overriding:
..\PrivateVirtu al.cpp(17) : error C3671: 'Derived::SomeV irtualFunction'
: function does not override 'Base::SomeVirt ualFunction'
..\PrivateVirtu al.cpp(16) : warning C4486:
'Derived::SomeV irtualFunction' : a private virtual method of a ref
class or value class should be marked 'sealed'
What is going on here?