Как я могу расширить класс в библиотеке, как 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; }
};

Я оказался потерянным в очень необычной ситуации, которую я никогда не находил:

Как я могу использовать (я) доступ к элементам … внутри класса?

Для функции getter, как вы можете видеть, это легко, поскольку у нас есть, по крайней мере, функция at.
Но как мне создать функцию setX, которая вставляет в позицию 0 вектора данный элемент …

Я попробовал это (я), очевидно, не сработало. Я чувствую себя таким новичком здесь …
Где строится «vec»? A std :: vector? … Правильно ли я поступаю, делая эти простые вещи?

0

Решение

at(0) = x; должно работать, если vec получен из std :: vector, потому что функция может возвращать непостоянную ссылку.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector