После добавления назначения копирования ваш код должен быть в безопасности.
Однако, если вы в порядке с написанием east()
вместо east
в своем коде, то более элегантное решение может быть следующим:
using ColumnVector3 = Eigen::Matrix<double, 3, 1>;
struct EnuPosition : public ColumnVector3
{
EnuPosition(): ColumnVector3(ColumnVector3::Zero()) {}
EnuPosition(double east, double north, double up): ColumnVector3(east, north, up) {}
template<class X>
EnuPosition(const X& other): ColumnVector3(other) {}
double& east() {return this->x();}
double const& east() const {return this->x();}
double& north() {return this->y();}
double const& north() const {return this->y();}
double& up() {return this->z();}
double const& up() const {return this->z();}
};
Если вы намеренно не хотите наследовать, вы, конечно же, можете сохранить ColumnVector3
в качестве члена.
Решенный это.
Решение BCP имело make-файлы для проектов, однако я должен был скопировать каталог инструментов и корень каталога повышения к месту, я скопировал все, что мой освобождает для получения вещей, работающих.