D - member access not spotted by the compiler
- Mike Wynn (30/30) Feb 05 2003 if you have a derived class with a private member that hides a public or
- Andrew Edwards (25/25) Feb 05 2003 Unfortunatly I cannot shed light on your question, however I would like ...
if you have a derived class with a private member that hides a public or
protected base member you get
and access voilation at runtime without any compiler warnings;
also it seem allow able to have a protected member in a derived class that
is public in the base class
(all you need to acces the method is a cast(base)).
class base
{
public:
this() {
printf( "base::this(){" );
init();
printf( "}base::this()" );
}
abstract void init();
}
class derv : base
{
private: // Access voilation
//protected: // works why ?
//public: // works
void init() { printf( "-init-" ); }
}
int main( char[][] args )
{
printf( "main{" );
derv d = new derv();
printf( "}main\n" );
return 0;
}
Feb 05 2003
Unfortunatly I cannot shed light on your question, however I would like to
know what is the point of private, if you can do this?
class base
{
public:
this()
{
init();
}
abstract void init();
}
class derv : base
{
private: // Access voilation
int test;
public: // works
void init() { printf( "-init-", test ); }
}
int main( char[][] args )
{
derv d = new derv();
d.test = 5; // should this work?
printf("[%d]", d.test);
return 0;
}
Feb 05 2003








"Andrew Edwards" <aedwards spamfreeamerica.com>