如何检查是否在C ++中声明了一个类?

我正在围绕一个框架编写一个软件,我正在使用的一个类(确切地说,扩展)在更高版本中重命名。 有没有办法在C ++ 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
{
...
};

注意:我想到了尝试检查框架的一个版本,但这个问题的答案让我感兴趣。 我也无法更改任何框架头文件。可接受的答案取决于是否定义了类(这意味着声明),在我的情况下,如果定义了类,则声明该类。

 
c++
c++11
0s