如何在像犰狳这样的库中扩展类

How can i extend a class in a library like Armadillo?

本文关键字:扩展      更新时间:2023-10-16

我正在使用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"建在哪里?一个标准::向量?...我做这些简单的事情是对的吗?

如果 vec 派生自 std::vector,at(0) = x;应该可以工作,因为 at 函数可以返回非常量引用。