我是编程新手,但今年夏天实习,我试图让这段代码运行。
我正在浏览别人的c ++代码("三角网格的精确测地线和#34;开源),一条线正在绊倒我。无论如何,该行如下:
geodesic::Mesh* mesh = algorithms[algorithm_id]->mesh();
如果我错了,请纠正我,但首先要初始化一个指针。它看起来像
class::pointerclass* thingpointedto = something[something] accessing member mesh();
我不知道equals操作数右侧的代码是什么意思。任何人都可以帮助我吗?
答案 0 :(得分:2)
geodesic::Mesh* mesh = algorithms[algorithm_id]->mesh();
此处,algorithms
可以是以下类型:
algorithm_id
operator[]
的顺序容器,例如std:vector
,使用整数类型整数algorithm_id
operator []
的关联容器,例如std::map
,使用键类型对象algorithm_id
operator []
的自定义类型,使用自定义类型对象建立索引,algorithm_id
由其签名决定 数组 []
访问返回指向具有成员函数mesh()
的对象的指针(常规或智能指针),该对象返回指向{{1}的指针对象。
geodesic::Mesh
的返回值不是algorithms[algorithm_id]
,而是持有作为临时(如果它还不是引用);然后它的成员函数binded
被称为
答案 1 :(得分:2)
看看潜在的source,我会说它是std::vector<algorithm_shared_pointer>
。其中algorithm_shared_pointer
是boost::shared_ptr<geodesic::GeodesicAlgorithmBase>
的typedef。
geodesic::Mesh* mesh = algorithms[algorithm_id]->mesh();
geodesic
是名称空间,Mesh
类位于该名称空间中。我们创建一个指向该类的指针。指针被赋予函数调用mesh()
的结果,可以由geodesic::GeodesicAlgorithmBase
调用。 algorithm_id
是一个int
,它作为参数提供给包含该行的函数。
此整数用于选择向量中的索引。
哪会导致:
namespace::pointerToClass* nameOfPointer
= std::vector<boost::shared_ptr<geodesic::GeodesicAlgorithmBase>>[int]->mesh();
由于auto
返回类型为mesh()
,因此可能使用geodesic::Mesh*
,这是一段奇怪的代码。