指针:这行代码是什么意思?

时间:2016-06-22 14:03:24

标签: c++ class pointers

我是编程新手,但今年夏天实习,我试图让这段代码运行。

我正在浏览别人的c ++代码("三角网格的精确测地线和#34;开源),一条线正在绊倒我。无论如何,该行如下:

geodesic::Mesh* mesh = algorithms[algorithm_id]->mesh();

如果我错了,请纠正我,但首先要初始化一个指针。它看起来像

class::pointerclass* thingpointedto = something[something] accessing member mesh();

我不知道equals操作数右侧的代码是什么意思。任何人都可以帮助我吗?

2 个答案:

答案 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_pointerboost::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*,这是一段奇怪的代码。