#include <iostream>
class A
{
protected :
int a_;
virtual bool SomeProtectedMethod( ) { return true ; }
} ;
class B: public A
{
public :
void print( ) { std:: cout << a_ << std:: endl ; }
} ;
class C: public B
{
public :
void print2( A * p) { std:: cout << p- > SomeProtectedMethod( ) << std:: endl ; }
} ;
int main( int argc, char * argv[ ] )
{
A a;
B b;
C c;
b.print ( ) ;
c.print2 ( & a) ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQQp7CnByb3RlY3RlZDoKICAgIGludCBhXzsKICAgIHZpcnR1YWwgYm9vbCBTb21lUHJvdGVjdGVkTWV0aG9kKCkgeyByZXR1cm4gdHJ1ZTsgfQp9OwoKY2xhc3MgQjogcHVibGljIEEKewpwdWJsaWM6CiAgICB2b2lkIHByaW50KCkgeyBzdGQ6OmNvdXQgPDwgYV8gPDwgc3RkOjplbmRsOyB9Cn07CgpjbGFzcyBDOiBwdWJsaWMgQgp7CnB1YmxpYzoKICAgIHZvaWQgcHJpbnQyKEEgKiBwKSB7IHN0ZDo6Y291dCA8PCBwLT5Tb21lUHJvdGVjdGVkTWV0aG9kKCkgPDwgc3RkOjplbmRsOyB9Cn07CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQp7CiAgICBBIGE7CiAgICBCIGI7CiAgICBDIGM7CiAgICBiLnByaW50KCk7CiAgICBjLnByaW50MigmYSk7CiAgICAKICAgIHJldHVybiAwOwp9