gpt4 book ai didi

c++ - 是否可以在结构构造中将自身地址推送到 vector ?

转载 作者:行者123 更新时间:2023-11-28 02:06:42 25 4
gpt4 key购买 nike

我有一个 struct Box 和一个指向 Box 对象的指针 vector ,就像这样,

struct Box {
int number;
Box() {
/* Push address of self to the vector here */
/* All I need is a way to access the address of self */
};
};

std::vector<Box*> Boxes;

我试图通过在创建时将对象的地址推送到 vector 来简化对象(用于 GUI 元素)的创建。这样我就可以在创建后编辑对象的成员,而不必手动推送到 vector 。

是否可以在对象构造函数中访问self的地址?

最佳答案

Boxes.push_back(this); 就是您所需要的。还要记住在析构函数中将其删除以避免在释放后使用。

std::vector<Box*> Boxes;

struct Box {
int number;
Box() {
Boxes.push_back(this);
};
~Box() {
Boxes.erase(std::remove(Boxes.begin(), Boxes.end(), this), Boxes.end());
}
};

在线演示:http://coliru.stacked-crooked.com/a/b0db13cfdff4a70b

关于c++ - 是否可以在结构构造中将自身地址推送到 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37200447/

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