开发者社区> 问答> 正文

Dynamic_cast C++类与对象问题 继承和多态问题,求大神修改

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";
}
}

展开
收起
a123456678 2016-03-06 13:02:48 2350 0
3 条回答
写回答
取消 提交回答
  • 乐于学习与分析

    将一个基类对象指针(或引用)cast到继承类指针,dynamic_cast会根据基类指针是否真正指向继承类指针来做相应处理,使用格式不对,dynamic_cast (expression)
    该运算符把expression转换成type-id类型的对象。Type-id 必须是类的指针、类的引用或者void*;
    如果 type-id 是类指针类型,那么expression也必须是一个指针,如果 type-id 是一个引用,那么 expression 也必须是一个引用。

    2019-07-17 18:54:23
    赞同 展开评论 打赏
  • 软件开发,安全加密

    将一个基类对象指针(或引用)cast到继承类指针,dynamic_cast会根据基类指针是否真正指向继承类指针来做相应处理,使用格式不对,dynamic_cast (expression)
    该运算符把expression转换成type-id类型的对象。Type-id 必须是类的指针、类的引用或者void*;
    如果 type-id 是类指针类型,那么expression也必须是一个指针,如果 type-id 是一个引用,那么 expression 也必须是一个引用。

    2019-07-17 18:54:23
    赞同 展开评论 打赏
  • 1.后面两个dynamic_cast没有类型,不知道是你没有用代码格式问题还是你漏了。
    2.a转a就不要cast了吧
    3.判断要从小到大。

    if(c1!=NULL){
        return "son";
    }
    else if(b1!=NULL){
        return "father";
    }
    else /*if(a1!=NULL)*/{
        return "grandpa";
    }
    2019-07-17 18:54:23
    赞同 展开评论 打赏
问答分类:
C++
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载