【发布时间】:2014-01-18 21:02:02
【问题描述】:
我正在为 3D 图形使用 3D 矢量。 我创建了一个类 vec3 来添加 getX、getY、getZ、setX、setY、setZ、setXYZ...等函数。
#include <armadillo>
using namespace arma;
// An extension to VEC class for Armadillo for 3D graphics.
class vec3 : public vec
{
public:
// Constructor inits vector to 0,0,0
vec3() : vec(3,fill::zeros) {}
~vec3(void){};
double getX() const { return at(0); }
double getY() const { return at(1); }
double getZ() const { return at(2); }
void setX(double x){ ?????? = x; }
};
我发现自己迷失在一个从未发现过的非常不寻常的情况中:
我如何在类中使用 (i) 访问元素...?
对于 getter 函数,正如您所见,这很简单,因为我们至少有一个“at”函数。 但是我如何创建一个 setX 函数,将给定元素插入向量的 0 位置......
我试过 this(i) ,显然没有用。我在这里感觉很新手... “vec”在哪里构建?一个std::vector?...我做这些简单的事情做得对吗?
【问题讨论】:
-
我对基类 (vec) 的了解不够,无法回答您的问题。基类的代码是公开的吗?您至少可以发布公共标头吗?
-
是的,我考虑过。我想,那么,我应该使用基类......对吗?如果它是一个 std::vector ......那我该怎么办?让我检查一下。
-
犰狳是哪个图书馆?是this一个吗?
-
@StevenHansen 它是开源的。我打开了重定向到所有文件的包含文件(我没有找到 VEC .. 很遗憾),但我看到它包括:#include
在顶部。我猜它与std有关:那么,如果VEC本身就是一个模板向量,我该怎么做呢? -
就我个人而言,我只是将您的课程改为使用作文。它只会在编码过程中引入少量额外的麻烦,但可以完全访问 Armadillo 的 vec 公共接口的所有功能。