Dynamic_cast
Total: 65 Accepted: 22
Time Limit: 1sec Memory Limit:256MB
Description
Three classes A, B and C are shown below:
class A {
public:
virtual ~A() {};
};
class B: public A {};
class C: public B {};
You are to implement a function string verify(A *), such that it returns "grandpa" if the passed-in argument points to a class A object, and "father" for a class B object , "son" for a class C object.
Your submitted source code should include the whole implementation of the function verify, but without any class defined above.
No main() function should be included.
以下是我的代碼,請問哪裡錯了,求大神修改 要用 dynamic_cast 做
string verify(A a){
A*p =& a;
A*a1=dynamic_cast<A>(p);
B*b1=dynamic_cast(p);
C*c1=dynamic_cast(p);
if(a1!=NULL){
return "grandpa";
}
if(b1!=NULL){
return "father";
}
if(c1!=NULL){
return "son";
}
}
if(c1!=NULL){
return "son";
}
else if(b1!=NULL){
return "father";
}
else /*if(a1!=NULL)*/{
return "grandpa";
}