该库提供了一个派生类,派生类作为模板参数。
例子:
class userclass : public lib::superclass<userclass>
{}
如您所见,要输入的内容很多。并且“用户类”应该始终作为公共派生以使其正常工作。所以我想出了两个看起来像这样的宏:
#define SUPER(x) public lib::superclass<x>
#define SUPERCLASS(x) class x : public lib::superclass<x>
用户现在可以键入其中任何一个。
class userclass : SUPER(userclass)
{}
SUPERCLASS(userclass)
{}
但主要问题是宏 SUPER 和 SUPERCLASS 存在于用户全局命名空间中的速度与包含标题一样快。
我可以/应该:
- 有办法保留命名空间要求但仍默认为公共派生?
- 按原样使用宏。
- 只需要求用户写出完整的“public lib::superclass”。
我正在使用 vs 11,并且该库针对 Windows 开发人员。