【发布时间】:2016-06-20 20:08:24
【问题描述】:
我正在尝试实现这样的目标:
我有一个模板化的基类,我想动态继承它
template<typename A, typename B>
class fooBase
{
public:
fooBase(){};
~fooBase(){};
};
想要的方法:(像这样,不太清楚怎么做)
template <typename... Interfaces>
class foo : public Interfaces...
{
public:
foo();
~foo();
}
我的目标是让 foo 类的行为如下:
第二种方法:
class foo()
: public fooBase<uint8_t, float>
, public fooBase<uint16_t, bool>
, public fooBase<uint32_t, int>
// and the list could go on
{
foo();
~foo();
}
使用第二种方法的问题是,如果我实例化一个 foo 对象,它将一直继承这 3 个基类,我想让它更通用,当实例化一个 foo 对象时,给它带有可变参数模板的参数对于基类,这样我就可以将 foo 类用于其他类型(也许只继承一个基类,也许是五个)
谢谢
实例化 foo 的示例
foo<<uint8_t, float>, <uint16_t, bool>, <uint32_t, int>, /* and the list could go on and on */> instance
【问题讨论】:
-
好像有人问过类似的问题here。
-
您能否发布一个您希望如何实例化
foo的示例? -
您希望
foo<int,char,float,double>扩展为foo : fooBase<int,char>, fooBase<float,double>吗? -
当然,我想像这样实例化它: foo instance,
, , /* 并且列表可以继续下去 * /> -
@mihaipop 使用您要使用的确切语法将示例添加到问题本身
标签: c++ templates c++11 inheritance variadic-templates