我有一个名为“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()));
答案 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;
}