【发布时间】:2021-10-01 00:56:57
【问题描述】:
我有以下(不是为了编译,而是为了有效地说明这个概念)
class abstract_mixin {
...
}
template<class X>
class concrete_mixin_A : public abstract_mixin, public X {
...
}
这里,abstract_mixin 定义了一个 mixins 家族,concrete_mixin_A 是该家族的一个成员(将有 _B、_C 等等)。另外,我有一个类家族,mixin 家族中的任何 mixin 都可以与这些类一起使用(即上面的 X 模板参数:
class abstract_mixin_compat {
}
class concrete_mixin_compat_A : public abstract_mixin_compat {
...
}
class concrete_mixin_compat_B : public abstract_mixin_compat {
...
}
然后我可以做concrete_mixin_A < concrete_mixin_compat_B >。
现在我有了第三类对对象进行操作的类。我想将其限制为(从逻辑上讲)符合abstract_mixin < abstract_mixin_compat > 的实例,以便允许上述所有组合和派生类。
所以我有一个带有模板参数T 的类,它允许所有类型...
template < class T >
class DoStuff {
...
do_some_stuff( ... accept all instances ... )
// Possibly also track the instance of T
T t_instance;
}
如何通过语法或其他方式实现这一目标?
【问题讨论】:
-
minimal reproducible example 将有助于解释您正在尝试做什么
标签: c++ templates inheritance mixins