我有一類設置類似於此:矢量參考對象?
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將它們引用到你的矢量中,它會對你有所幫助。 –