我有一个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/

10-09 08:59