指向对象的指针向量

Vector of pointers to objects c++

本文关键字:指针 向量 对象      更新时间:2023-10-16

我有一个基类,有2个派生类和另一个存储派生类类型的对象:

class X
{};
class X1 : public X
{};
class X2 : public X
{};
class Y
{
std::vector<X*> V;
};

为什么这种在V中引入元素的方法不起作用?

X1 object;
X *ptr = &object;
V.push_back(ptr);

我假设您已经将示例代码放入类Y的函数中,并且可以访问类成员变量V
当函数返回时,指向局部声明的object变量的指针无效。您可以通过从堆中分配一个对象来解决这个问题:

X *ptr = new X();
V.push_back(ptr);

或者更好的是,如果可能的话,使用智能指针代替原始指针,例如:

class Y {
    std::vector<std::shared_ptr<X> > V;
};
V.push_back(std::make_shared<X>());