C ++中的boost向量的子类

时间:2013-06-25 12:31:54

标签: c++ boost boost-ublas

如何创建boost::numeric::ublas::c_vector<float, 3>的子类,其三个元素可以使用.x .y或.z访问,并且具有vec3(float x, float y, float z);形式的构造函数。我想使用boost向量,因为我不想自己为类的所有运算符和数学函数编写函数,而且我已经使用了boost库。

例如:

foo = vec3(2.5f, 0.0f, 0.0f);
bar = vec3(2.0f, 0.0f, 0.0f);

foo += bar;
cout << foo.x; // prints 4.5

1 个答案:

答案 0 :(得分:2)

不要创建子类,因为将来可能会遇到问题,因为基类成员函数是非虚拟的。在这种情况下,首选组合(使该类的对象成为您的类的成员)。此外,Herb Sutter建议永远不要推导出具体的类(特别是在C ++中,因为存在一个虚拟/非虚拟成员函数系统)。