【发布时间】:2016-06-22 14:03:23
【问题描述】:
我是编程新手,但今年夏天有实习,我正在努力让这段代码运行。
我正在查看其他人的 c++ 代码(“三角网格的精确测地线”开源),其中一行让我感到困惑。反正行如下:
geodesic::Mesh* mesh = algorithms[algorithm_id]->mesh();
如果我错了,请纠正我,但首先要初始化一个指针。好像
class::pointerclass* thingpointedto = something[something] accessing member mesh();
我不知道等号操作数右侧的代码是什么意思。谁能帮帮我?
【问题讨论】:
-
你有错字吗?指向成员运算符
->的指针不能有空格。 -
algorithms是一个数组/向量/映射(或其他具有重载operator[]的类型)。它显然返回一个指向带有mesh()成员的东西的指针,该成员返回另一个指针。 -
algorithm是一个算法数组。algorithm_id是一个索引(算法在所有提供的算法中的数量),所以你首先得到一个给定的算法。一旦你得到一个算法(注意它只是一个算法的指针),你只需调用它的方法mesh(),它会返回一些计算的Geodesic::Mesh结构的地址。 -
我很难理解第二个粗体行,但第一个粗体行意味着(假设它已正确编译)1)有一个名为
algorithms的数组,其中包含指向某个类的对象的指针(此处未指定)2)该类具有成员函数mesh(),该函数返回指向类geodesic::Mesh的对象的指针3)这行代码定义了一个指向geodesic::Mesh的指针,称为mesh并使用方法的结果对其进行初始化'mesh()` 使用数组algorithm_idth 指针algorithms调用