在我将 class 实例移动到 class 成员后,无法初始化它?
Cannot initialize a class instance, after I move it to a class member?
这个有效:
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud2 (new pcl::PointCloud<pcl::PointXYZ>);
但这不起作用:
Class.h,私有变量
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud;
Class.cpp, 在构造函数中
cloud (new pcl::PointCloud<pcl::PointXYZ>);
生成失败:
error: no match for call to ‘(pcl::PointCloud<pcl::PointXYZ>::Ptr {aka boost::shared_ptr<pcl::PointCloud<pcl::PointXYZ> >}) (pcl::PointCloud<pcl::PointXYZ>*)’
cloud (new pcl::PointCloud<pcl::PointXYZ>);
为什么两者不一样?从 .cpp 中看到的唯一区别是一个是左边的类型(声明),一个已经在 .h 中声明,但错误似乎抱怨参数,尽管我使用完全相同的参数。
我认为你是在构造函数体中初始化它而不是在成员初始化列表中:
struct A{
A(int){}
A(){}
};
struct B
{
A a;
B(): a(52) //correct syntax
{
a(52); //error: no match for call to...
}
};
int main()
{
A a(5); //ok this works
}
你必须放置
cloud (new pcl::PointCloud<pcl::PointXYZ>);
在您的 Class
成员初始值设定项列表中:
Class(): cloud (new pcl::PointCloud<pcl::PointXYZ>)
{
//constructor body
}
这个有效:
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud2 (new pcl::PointCloud<pcl::PointXYZ>);
但这不起作用:
Class.h,私有变量
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud;
Class.cpp, 在构造函数中
cloud (new pcl::PointCloud<pcl::PointXYZ>);
生成失败:
error: no match for call to ‘(pcl::PointCloud<pcl::PointXYZ>::Ptr {aka boost::shared_ptr<pcl::PointCloud<pcl::PointXYZ> >}) (pcl::PointCloud<pcl::PointXYZ>*)’
cloud (new pcl::PointCloud<pcl::PointXYZ>);
为什么两者不一样?从 .cpp 中看到的唯一区别是一个是左边的类型(声明),一个已经在 .h 中声明,但错误似乎抱怨参数,尽管我使用完全相同的参数。
我认为你是在构造函数体中初始化它而不是在成员初始化列表中:
struct A{
A(int){}
A(){}
};
struct B
{
A a;
B(): a(52) //correct syntax
{
a(52); //error: no match for call to...
}
};
int main()
{
A a(5); //ok this works
}
你必须放置
cloud (new pcl::PointCloud<pcl::PointXYZ>);
在您的 Class
成员初始值设定项列表中:
Class(): cloud (new pcl::PointCloud<pcl::PointXYZ>)
{
//constructor body
}