我有一类设置类似于此:矢量参考对象?
class BlimpBase{
public:
virtual ~BlimpBase();
private:
virtual void lift()const = 0;
};
class Blimp: protected BlimpBase{
void lift()const;
};
class BlimpCarrier{
public:
add_blimp(BlimpBase& blimp);
private:
std::vector<BlimpBase* blimp> blimps;
};
正如你所看到的,我有一组多态飞艇类的,我想,然后存储通过使用指针在矢量“引用”(我意识到你不能在向量中存储引用,我只是不知道如何描述它们)。问题在于大多数这些对象都是作为类成员分配在堆栈上的,但我想将它们添加到这个向量中,以便我可以直接修改它们(副本不会)。保持指向这些对象的问题是,如果这些对象在BlimpCarrier
之前超出范围(因为它们在堆栈中),我将会有一个悬挂指针。我看着std::unique_ptr
和std::shared_ptr
,但我认为我不认为我可以在这里使用它们......
只是不要在堆栈上分配它们。 –
@PaulGriffiths:他们是类的成员,我想通过这个数组“引用”他们。我不认为把它们放在堆上会帮助我解决任何问题 – Shokwav
如果你将它们作为shared_ptr放到类中,并通过shared_ptr或weak_ptr将它们引用到你的矢量中,它会对你有所帮助。 –