Кастинг классов (апкастинг)

У меня есть класс с именем «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()));

0

Решение

Для достижения полиморфизма вам нужно использовать указатели или ссылки.

#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;
}
1

Другие решения


По вопросам рекламы [email protected]