铸造课程(向上倾斜)

时间:2014-06-15 13:36:26

标签: c++ class upcasting

我有一个名为“obj”的类,另一个名为“aggregate”。

第二个来自第一个。

“obj”类只包含一个整数。 “聚合”不再是(只有更多“方法”)。

class obj{
public:
  int t;
}

我有一个返回“obj”

的函数
obj pop();

我需要将它的结果分配给类“aggregate”的变量。

聚合a; a = pop();

我尝试这样做:

a=static_cast<aggregate>(pop());
a=dynamic_cast<aggregate>(pop());

因为基本上在堆栈上传递了结构的值(所以基本上是一个整数)我无法理解为什么我应该这样做:

a=*((aggregate*)(&pop()));

1 个答案:

答案 0 :(得分:1)

要实现多态,您需要使用指针或引用。

#include <stdlib.h>

class obj
{
    protected:
        virtual ~obj () {};
        int data;
};

class agregate : public obj
{
    public:
        void actionA () {};
        void actionB () {};
};

obj * pop ()
{
    return new agregate;
}

int main (int argc, char * argv [])
{
    agregate * a = dynamic_cast <agregate *> (pop () );

    return EXIT_SUCCESS;
}