我有一个struct Box和一个指向Box对象的指针向量,就像这样,
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;
我正在尝试通过在创建对象时将对象的地址推到矢量来简化对象(用于GUI元素)的创建。这样,我可以在创建对象后编辑对象的成员,而不必手动将其推入向量。
是否可以在对象构造函数中访问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/