我正在研究一个微处理器(Arduino)项目。我的库Foo
从现有的库Basic
继承。后来我将Basic
的功能扩展到另一个类Advanced
。然而,Advanced
更难扩展硬件,使得其中一个已经制作的演示无法使用。C++:有条件继承可能
我在想什么的是如下:
class Foo:
#ifndef USE_BASIC
public Advanced
#else
public Basic
#endif
{
...
}
在我的演示代码
并把#define USE_BASIC
:
#define USE_BASIC
#include <Foo.h>
但是富不从基本继承。我在这里做错了吗?或者如果有替代方案来解决这个问题?
您必须在包含'Foo.h'的每个翻译单元(.cpp +包含的标题)中定义'USE_BASIC',在'#include'指令之前。考虑使用编译器开关(在每个翻译单元中自动声明“USE_BASIC”)或将#define定义在标题中。 –
dyp
2013-05-03 12:24:39
@Named我不同意。头文件没有特别之处,OP显示了在包含头文件之前定义'USE_BASIC'的例子。编译器在cpp上运行,因此预处理器首先看到_then_包含头部(在OP的例子中)。 – dyp 2013-05-03 12:29:05
我无法理解-1。 – 2013-05-03 13:04:47