问题其实很简单,有一个父类A,子类B:public A
在主函数中: A testa;
B testb=B(2);
testa=testb;
B testbb;
testbb=(B)testa;结果在编译的时候testbb=(B)testa;语句报错,说不能从A转到B,这是怎么回事情?

解决方案 »

  1.   

    你的意思我明白。关键是最初定义testb的时候是B的对象,并不是A的对象。我仅仅是在父类的对象中存放了一下,拿出来之后转换不过来了,哪有这种道理的??
      

  2.   

    lz 对 C++ 中的对象概念有误解testa=testb; // 这里可不是存一下这么简单
      

  3.   

    如果是指针的话,倒是可以static_cast或者dynamic_cast当然,如果你一定要这样做,c++也是可以实现的
    class B : public A
    {
     ... public:
       B& operator = (const A& a) { /* ,,, */};
     ...
    };
      

  4.   

        A *testa;
        B *testb= new B(2);
        testa=(A *)testb;
        B *testbb;
        testbb=(B)testa;
    这样应该可以。
      

  5.   

    谢谢大家,因为我之前在C#平台下开发的,这种情况在C#下完全可以,到C++下就不行了,大家说的对,用指针可以实现。谢谢大家,结贴了
      

  6.   

    谢谢大家,因为我之前在C#平台下开发的,这种情况在C#下完全可以,到C++下就不行了,大家说的对,用指针可以实现。谢谢大家,结贴了
      

  7.   


    呵呵  我只是打个比方吧,这里面还有个构造了一个匿名对象调用copy构造函数等一大堆的过程。谢谢啦