Я работаю с 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? … Правильно ли я поступаю, делая эти простые вещи?
at(0) = x;
должно работать, если vec получен из std :: vector, потому что функция может возвращать непостоянную ссылку.
Других решений пока нет …