steffi123 Ответов: 1

Объявление другого типа объекта с помощью макроса


Мне нужно справиться с нижеприведенным сценарием.

class A()
{
   int i;
};

class B()
{
   int j;
};

class C
{
   int k;
};

class D
{
  int l;
}

class E:A
{
  MYMACRO obj
};

Если класс E является производным от класса A, то макрос MYMACRO должен создавать объект типа C, тогда как если класс E является производным от класса B, то макрос MYMACRO должен создавать объект типа D.

Как достичь этого с помощью макроса?

Мое требование состоит в том, что я не должен упоминать тип объекта при объявлении.Макрос должен проверить, является ли текущий класс производным от того или иного.Затем он должен создать объект разных типов.

Если есть какое-либо другое решение, кроме использования макроса, пожалуйста, предложите мне?

Что я уже пробовал:

Я исследовал его, но не смог получить решение для своего сценария.

0x01AA

Я думаю, что это плохой дизайн и сумасшедшая идея. Я скажу, что даже если вы сможете решить эту проблему с помощью макросов, вы не сможете поддерживать ее в будущем.

Philippe Mori

Даже если бы вы нашли способ сделать это, вам пришлось бы где-то объявить отображение...

1 Ответов

Рейтинг:
1

Richard MacCutchan

Видеть оператор typeid[^].


0x01AA

typeid-это вещь времени выполнения:
"Оператор typeid позволяет определить тип объекта в _run time_."

Для меня это выглядит больше, OP пытается сделать сумасшедшую конструкцию во время компиляции/проектирования.

Richard MacCutchan

Я прекрасно это понимаю, но, вероятно, это единственный путь.