我现在遇到这个问题有一段时间了,我不知道如何解决它。上下文是 C++ 中的反射系统。这个问题的一个瘦身解释是这样的。我有这两个结构。一种是表示 ClassType 类型的多个父类,另一种是表示孤儿类(ClassType 类型且没有父类的类)
template<typename ClassType, typename... ParentTypeList>
struct Parents
{
};
template<typename ClassType>
struct Parents<ClassType>
{
};
然后在我要反映的类的声明中,我使用这个宏,类 ReflectionHelper::Parents 是上面的类
#define DEFINE_METACLASS(className, ...) \
private: \
typedef className SelfType; \
typedef ReflectionHelper::Parents<SelfType, __VA_ARGS__ > ParentList \
孤儿类的用法是:
class TestMetaClassDefine
{
DEFINE_METACLASS(TestMetaClassDefine);
};
现在的问题是 __VA_ARGS__ 是空的,而
typedef ReflectionHelper::Parents<SelfType, __VA_ARGS__ > ParentList;
因此无效。
我想解决这个问题的一种方法是使用默认模板参数,但它不允许使用可变参数模板。
有人有解决这个问题的技术吗?
非常感谢