gpt4 book ai didi

c++ - 指向对象的指针 vector C++

转载 作者:行者123 更新时间:2023-11-28 00:31:36 25 4
gpt4 key购买 nike

我有一个包含 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>());

关于c++ - 指向对象的指针 vector C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22718281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com