C++ 指针的指针推回向量
编译时,我得到以下错误。你能帮忙吗C++ 指针的指针推回向量,c++,C++,编译时,我得到以下错误。你能帮忙吗 ldframework::PointImpl::PointImpl(const BPatch_point&* po) { Bpatch_point *_bpoint=new BPatch_point(*po); } 查看第86行的(*点[0])部分 由于点是指向向量的指针,且数组下标运算符[]的优先级高于一元间接运算符*,因此将其解析为*(*(点+0)) 您可以尝试用(*点)[0]或甚至:(*点)[i] 此外,new_points是
ldframework::PointImpl::PointImpl(const BPatch_point&* po)
{
Bpatch_point *_bpoint=new BPatch_point(*po);
}
查看第86行的(*点[0])
部分
由于点
是指向向量的指针,且数组下标运算符[]的优先级高于一元间接运算符*,因此将其解析为*(*(点+0))
您可以尝试用(*点)[0]
或甚至:(*点)[i]
此外,new_points
是指向向量的指针,该向量在使用之前尚未指定给指向有效对象的指针
此外,我看到您使用了很多指针,这会导致额外的间接性,减少局部性,并给您带来清理内容或导致内存泄漏的负担。new_points
是否必须是指向ldframework::Point
的指针向量?您可以使用std::unique_ptr
向量来避免清理负担,但您也可以考虑:
ldframework::Point *pt1 = new ldframework::PointImpl((*points[0]));
std::vector*新点=
新std::载体;
对于(无符号整数i=0;isize();i++)
{
新建点->向后推(ldframework::PointImpl((*points)[i]);
}
或者更好:
std::vector<ldframework::PointImpl> *new_points =
new std::vector<ldframework::PointImpl>;
for(unsigned int i = 0; i < points->size(); i++ )
{
new_points->push_back( ldframework::PointImpl((*points)[i]) );
}
std::向量新点;
对于(无符号整数i=0;isize();i++)
{
新的点。向后推(ldframework::PointImpl((*points)[i]);
}
始终听编译器的声音。甚至我也想听编译器的错误。我在问如何修复这个编译器错误。编译器说错误在成员函数BfunctionImpl::find_Point
这个成员函数在哪里?上面的代码行仅来自find_Point函数
ldframework::Point *pt1 = new ldframework::PointImpl((*points[0]));
std::vector<ldframework::PointImpl> *new_points =
new std::vector<ldframework::PointImpl>;
for(unsigned int i = 0; i < points->size(); i++ )
{
new_points->push_back( ldframework::PointImpl((*points)[i]) );
}
std::vector<ldframework::PointImpl> new_points;
for(unsigned int i = 0; i < points->size(); i++ )
{
new_points.push_back( ldframework::PointImpl((*points)[i]) );
}