Я работаю с 3D-векторами для 3D-графики. Я создал класс vec3 для добавления таких функций, как getX, getY, getZ, setX, setY, setZ, setXYZ ... и так далее.Как я могу расширить класс в библиотеке, такой как Armadillo?
#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), очевидно, не работал. Я чувствую себя таким новичком здесь ... Где находится «vec»? Std :: vector? ... Я делаю это правильно, выполняя эти простые вещи?
Я не знаю достаточно о базовом классе (vec), чтобы ответить на ваш вопрос. Является ли код для базового класса общедоступным? Можете ли вы опубликовать хотя бы общедоступный заголовок? –
Да, я подумал об этом. Думаю, тогда я должен использовать базовый класс ... правильно ?. Если бы это был std :: vector ... что я должен делать, тогда? Дай мне проверить. – darkgaze
Какая библиотека является броненосцем? Это [это] (http://arma.sourceforge.net/docs.html#Col)? – Gasim