Я работаю с 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) доступ к элементам ... внутри класса?
Для функции получения, как видите, это просто, поскольку у нас есть, по крайней мере, функция "at". Но как мне создать функцию setX, которая вставляет в позицию 0 вектора данный элемент ...
Я пробовал это (i), явно не сработало. Я чувствую себя здесь таким новичком ... Где построен "век" ?. Std :: vector? ... Правильно ли я поступаю, выполняя эти простые вещи?
this[0]=x
. Не видя исходного кода, может быть проще использовать композицию вместо наследования. (Имеет вместо Is a). - person Steven Hansen   schedule 19.01.2014