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