繁体   English   中英

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

[英]Pointers: What does this line of code mean?

我是编程新手,但今年夏天有实习机会,我正在尝试使这段代码运行。

我正在查看别人的c ++代码(“用于Triangular Meshes的精确测地线”开放源代码),一行被绊倒了。 无论如何,该行如下所示:

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

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

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

我不知道equals操作数右侧的代码是什么意思。 谁能帮我吗?

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

在这里, algorithms可以是以下一种类型:

  • 数组指针,在这种情况下,它由整数类型整数algorithm_id索引
  • 具有重载operator[]顺序容器,例如std:vector ,它用整数类型整数algorithm_id索引
  • 具有重载operator []的关联容器,例如std::map ,该容器以键类型对象algorithm_id索引
  • 一个自定义类型与一个重载operator []使用自定义类型的对象索引, algorithm_id通过它的签名所指示

数组 []访问返回指向对象的指针(常规指针或智能指针),该对象具有成员函数mesh() ,该函数返回指向geodesic::Mesh对象的指针。

返回值algorithms[algorithm_id]binded到任何东西,相反, 持有临时(如果尚未参考); 然后调用其成员函数mesh()

看一下潜在的来源,我会说这是一个std::vector<algorithm_shared_pointer> 其中algorithm_shared_pointerboost::shared_ptr<geodesic::GeodesicAlgorithmBase>的typedef。

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

geodesic是一个名称空间, Mesh类位于该名称空间中。 我们创建一个指向该类的指针。 指针被分配了可以由geodesic::GeodesicAlgorithmBase调用的函数mesh()的结果。 algorithm_id是一个int ,它作为包含此行的函数的参数提供。

该整数用于选择向量中的索引。


这将导致:

namespace::pointerToClass* nameOfPointer 
    = std::vector<boost::shared_ptr<geodesic::GeodesicAlgorithmBase>>[int]->mesh();

考虑到由于mesh()返回类型为geodesic::Mesh*它可能已使用auto所以这是一段奇怪的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM