Я пишу часть программного обеспечения вокруг фреймворка, и класс, который я использую (если быть точным, расширяющим), был переименован в более позднюю версию. Есть ли какой-нибудь способ написать несколько макросов/шаблонов в С++ 11, чтобы определить, был ли класс с определенным именем объявлен в точке кода?
Иллюстрация того, чего я пытаюсь достичь, приведена ниже. Предположим, что файл class_include.h содержит определение класса A
:
class A
{
...
};
или класс B
:
class B
{
...
};
и класс C
пытается расширить то, что объявлено:
#include <class_include.h>
#if (class A is declared)
class C : public A
#else // class B is declared
class C : public B
#endif
{
...
};
Примечание: мне пришло в голову попробовать проверить версию фреймворка, но ответ на этот вопрос меня интересует. Я также не могу изменить какие-либо рамки заголовочных файлов.
РЕДАКТИРОВАТЬ: принятый ответ зависит от того, определен ли класс (что подразумевает объявление), и, в моем случае, класс объявляется, если он определен.