i'm trying figure out best way hold pointer element in vector has been created , added member variable vector:
scenegraphnode* addchild(std::string name){ scenegraphnode child(this,name); m_children.push_back(child); return &child; } the compiler rightfully gives me warning since returning address of object created on stack, , object go out of scope function ends. however, object lives on in vector, right?
so, should ignore warning or there better way this?
however, object lives on in vector, right?
no, copy of does. want return address of copy.
return &m_children.back(); however, not idea store pointer object resides in vector. because when vector needs reallocate, pointer invalidated. perhaps should store pointers (preferably smart pointers) in vector instead.
for example:
// in class std::vector<std::unique_ptr<scenegraphnode>> m_children; scenegraphnode* addchild(std::string name) { std::unique_ptr<scenegraphnode> child(new scenegraphnode(this,name)); m_children.push_back(std::move(child)); return m_children.back().get(); }
Comments
Post a Comment