A copy would consume much memory and takes much more time than to take the pointer. In my opinion it depends how the class is used. I am not sure how the class is used. A mesh is a "long living object". Are the vec_items temporary vectors? Keep in mind vec_items have to life at least as long as the MeshSubset object. Else the class internal pointer to vec_items will be invalid.