0

我有一个名为 "obj" 的类和另一个名为 "aggregate" 的类。

第二个是从第一个衍生而来的。

“obj”类只包含一个整数。“聚合”仅此而已(只有更多“方法”)。

class obj{
public:
  int t;
}

我有一个返回“obj”的函数

obj pop();

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

聚合 a;a=pop();

我尝试这样做:

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

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

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

1 回答 1

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;
}
于 2014-06-15T13:49:34.887 回答