C++ C++;

C++ C++;,c++,boost,boost-ublas,C++,Boost,Boost Ublas,我如何创建一个boost::numeric::ublas::c_vector的子类,它的三个元素可以用.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 << f

我如何创建一个
boost::numeric::ublas::c_vector
的子类,它的三个元素可以用.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
foo=vec3(2.5f,0.0f,0.0f);
bar=vec3(2.0f,0.0f,0.0f);
foo+=巴;

cout不要创建子类,因为将来可能会遇到问题,因为基类成员函数是非虚拟的。在这种情况下,更倾向于组合(使此类的对象成为类的成员)。此外,Habor萨特建议从不导出具体类(特别是在C++中,存在一个虚拟/非虚拟成员函数系统)。