我可以/应该从一个提升继承.融合序列
Can/should i inherit from a Boost.Fusion sequence?
我可以/应该从一个融合序列继承实现我自己的序列类吗?如果没有,为什么?
例如:typedef boost::fusion::vector<
std::vector<const char*>,
int,
double > MyVector;
class MyVectorWithData : public MyVector
{
public:
MyVectorWithData(int i); // Constructor does some initialization
// may be other member functions acting on baseclass MyVector
};
与标准容器一样,Fusion容器不提供虚析构函数,因此反对扩展它们的论据同样成立。
除此之外,根据我的经验,模板元编程和继承不能无缝地结合在一起。主要的问题是基类不被认为是选择模板专门化的,这意味着如果某些元函数是针对fusion::vector
专门化的,那么您将无法将它用于从fusion::vector
派生的类型。
如果我没记错的话,Fusion使用标签调度和trait类来选择实现,所以这可能是个问题。我认为默认的trait类只是"转发"一个嵌套的typedef,这样可以在这里工作,因为typedef将被继承,但我不确定这是可靠的(实现可能会改变)。
最后,Fusion容器不提供任何成员函数(除了构造和赋值所需的成员函数),因此从它们派生几乎没有什么用处。如果你希望你的类与Fusion(元)函数兼容,你应该使用库提供的扩展机制。
相关文章:
- 如何从另一个文件继承私有成员变量和公共函数
- 为什么我不能在主函数之外定义一个类的对象(它继承了另一个类)?
- 如何定义一个没有重复代码的继承的 const 类成员函数?
- 在一个类中使用另一个类中的函数,而不在 c++ 中使用继承
- C++:返回一个基于范围 for 循环迭代器,其中包含继承对象
- 从抽象类继承以创建另一个抽象类时,我应该重新声明所有虚函数吗?
- 有没有办法C++将给定类的功能限制为仅另一个类(不使用继承,朋友)?
- 具有多个继承共享一个资源的对象 - 寻找良好的设计模式
- 一个关于继承和引用的C++问题
- 结交一个班友并继承它有什么用
- 继承:访问另一个类的私有和公共部分
- 如果一个类继承了一个带有虚拟 dtor 的类,为什么要删除一个没有虚拟 dtor 的类是可以的
- 相对于继承的构造函数,gcc 编译器是否还有一个错误?
- 如何创建一个继承自 std::vector 的类
- 动态创建一个继承的类,使用STD :: MAP使用基类指针访问
- C 预期的类名称{token,一个继承错误
- 如何创建一个继承自QWidget的qt插件
- 如何将"&player"对象传递到另一个继承的类构造函数("score")中?
- 是一个继承的默认构造函数,也是用户定义的
- 如何创建一个继承FILE方法的类