У меня есть класс с именем «obj» и еще один с именем «агрегат».
Второй является производным от первого.
Класс «obj» содержит только целое число. «Совокупность» не более (только больше «методов»).
class obj{
public:
int t;
}
У меня есть функция, которая возвращает «объект»
obj pop();
и мне нужно присвоить результат этого переменной класса «агрегат».
агрегат a; a = pop ();
Я пытаюсь сделать это так:
a=static_cast<aggregate>(pop());
a=dynamic_cast<aggregate>(pop());
Поскольку по существу в стеке передается значение структуры (по сути, целое число), я не могу понять, почему я должен делать:
a=*((aggregate*)(&pop()));
Для достижения полиморфизма вам нужно использовать указатели или ссылки.
#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;
}