我如何在像Armadillo这样的图书馆中扩展课程?

时间:2014-01-18 21:02:02

标签: c++ extend armadillo

我正在处理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位置......

我试过这个(i),显然没有用。我觉得这里有新手...... “vec”建在哪里?一个std :: vector?...我做这个简单的事情做得对吗?

1 个答案:

答案 0 :(得分:1)

如果vec是从std :: vector派生的,那么

at(0) = x;应该有效,因为在函数处可以返回非常量引用。