0

如何创建 a 的子类,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
4

1 回答 1

2

不要创建子类,因为将来可能会出现问题,因为基类成员函数是非虚拟的。在这种情况下更喜欢组合(使此类的对象成为您的类的成员)。Herb Sutter 还建议永远不要派生具体类(尤其是在 C++ 中,因为存在虚拟/非虚拟成员函数系统)。

于 2013-06-25T12:34:49.443 回答