我实际上是C++的新手,我试图弄清楚编译器如何执行以下行:

pcl::ModelCoefficients::Ptr coefficients (new pcl::ModelCoefficients ());

我知道创建了pcl::ModelCoefficents()类型的堆内存,并将其指针传递给了函数coefficients()。让我感到困惑的是,我们不应该使用如下所示的箭头运算符:
pcl::ModelCoefficients::Ptr->coefficients (new pcl::ModelCoefficients ());

最佳答案

该声明

pcl::ModelCoefficients::Ptr coefficients (new pcl::ModelCoefficients ());

可以改写成
pcl::ModelCoefficients::Ptr coefficients = new pcl::ModelCoefficients;

我认为第二个版本显示了更好的进展。

简而言之,该行定义了一个类型为coefficients的名为pcl::ModelCoefficients::Ptr的变量。然后,使用coefficients的结果初始化new pcl::ModelCoefficients

关于c++ - 这个函数 “a::b::ptr function(value)”调用在C++中如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60520744/

10-14 09:13