【发布时间】:2023-04-11 05:10:01
【问题描述】:
我有以下积分类:
class MyPoint
{
public:
// Constructor
MyPoint(double, double, double);
// Destructor
virtual ~MyPoint(){};
protected:
private:
double x;
double y;
double z;
};
我想创建一个 myPoints 的向量来存储一些数据:
vector <MyPoint> vectorOfPoints
for (int i = 0; i < 10 ; i++)
{
vectorOfPoints.push_back(MyPoint(1,2,3));
}
我想创建一个名为 myFaces 的类来存储构成人脸的点的地址。
例如,
使用vectorOfPoints[0]、vectorOfPoints[2]、vectorOfPoints[5]和vectorOfPoints[6]构建面A。
如何将具有上述条目地址的向量传递给 myFace 类?
class myFace
{
public:
// Constructor
myFace(int, vector<std::shared_ptr<Point> > );
// Destructor
virtual ~myFace(){};
protected:
private:
int nPointsInFace_;
vector<std::shared_ptr<Point> > refToPointsThatMakeUpThisFace_;
};
非常感谢您的帮助!
【问题讨论】:
-
如果您希望使用
std::shared_ptr将myFace链接到点所在的std::vector<Point>,这不会发生。如果外部向量是std::vector<std::shared_ptr<Point>>,它当然可以(并且很容易)完成。 -
您能举个例子吗?最初的方法实际上是将 std::vector
链接到 myFace -
Jon 下面的回答正是描述了问题和解决方案。
标签: c++ c++11 pointers vector shared-ptr