C++访问继承类中的运算符函数



我目前正在编写一个应用程序,使用特征库进行复杂的三维数学。因为我需要不同的点和向量类,所以我的point3d类看起来像这样:

class point3d : public Eigen::Vector4d
{
public:
point3d(){}
point3d(double x, double y, double z) : Eigen::Vector4d(x, y, z, 1) {}
void fromString(std::string input);
};

现在我想创建这个类的一个成员函数,它允许我解析OBJ文件的行,如下所示:

v 2.8 0.52 10.18

作为这一点。这就是我打算如何设计我的解析功能

void point3d::fromString(std::string input)
{
char* buf = strdup(input.c_str());
if (strtok(buf, " ") == "v")
{
;
strtok(buf, " ");
this-x = std::stod(strtok(buf, " "));
this->y = std::stod(strtok(buf, " "));
this->z = std::stod(strtok(buf, " "));  
}
}

我的问题是,Eigen不允许我访问存储在Vector4d中的数据,如this->x、this-y、this->z等等。相反,你通常会将其访问为Vector4dv;v[0]、v[1]、v[2]等。我认为它的方法是使用

double Eigen::Vector4d::operator[](unsigned int index){...}

功能。

我不知道如何访问派生类中的数据。我必须做些什么才能访问该函数中的这些数据,以便写入x、y、z值?

您可以进行

(*this)[0]

以便调用基类CCD_ 1。

xyz不是Eigen::Vector4d的成员变量,而是方法。您可以使用this->x()等(或Vector4d::x()(从派生类访问它们。同样有效的是(*this)[0](*this)(0)。如果你需要在课堂上频繁访问operator[]0、y()z(),你可以写一次:

using Vector4d::x;
using Vector4d::y;
using Vector4d::z;

然后仅使用x()y()z()来访问它们。但是,这可能会导致一些阴影冲突(如果以相同的方式命名局部变量(。

最新更新