我如何继承 mpl::vector 中的所有类型?
How can i inherit from all types in mpl::vector?
我使用 mpl::vector
来自 boost 1.58。我有类型:
typedef mpl::vector <base1, base2, base3> types;
如果我有一个 class derived,我如何从这个 mpl::vector
中的所有这些类型继承它?
您可以使用 inherit_linearly.
用法示例:
class A
{
public:
void a() {}
};
class B
{
public:
void b() {}
};
class C
{
public:
void c() {}
};
typedef boost::mpl::vector<A, B, C> types;
class Derived :
public boost::mpl::inherit_linearly<types,
boost::mpl::inherit<boost::mpl::_1, boost::mpl::_2> >::type
{
};
int main()
{
Derived d;
d.a();
d.b();
d.c();
}
我使用 mpl::vector
来自 boost 1.58。我有类型:
typedef mpl::vector <base1, base2, base3> types;
如果我有一个 class derived,我如何从这个 mpl::vector
中的所有这些类型继承它?
您可以使用 inherit_linearly.
用法示例:
class A
{
public:
void a() {}
};
class B
{
public:
void b() {}
};
class C
{
public:
void c() {}
};
typedef boost::mpl::vector<A, B, C> types;
class Derived :
public boost::mpl::inherit_linearly<types,
boost::mpl::inherit<boost::mpl::_1, boost::mpl::_2> >::type
{
};
int main()
{
Derived d;
d.a();
d.b();
d.c();
}