我试图返回对象UnitCubeInstance
,它是类MeshObject
的实例。 MeshObject
引用了MeshAsset
类。
我目前执行此操作的方法很不走运,并且当返回对象时,MeshAsset
不再可用。
我的问题是,下面显示的设计是否可行?还是我必须使MeshObject
容纳MeshAsset
的实际实例,这似乎很容易实现,但在内存上效率不高。]
有问题的代码:
static MeshObject createUnitCubeInstance(Program &program) { auto unitCubeAsset = MeshAsset::UnitCube(); auto unitCubeInstance = MeshObject(unitCubeAsset); return unitCubeInstance; }
以及这两个类的最小版本:
class MeshAsset { // returns a general instance that is designed to be shared, // kind of resemble a singleton static MeshAsset UnitCube(); } class MeshObject { MeshAsset& asset; MeshObject(MeshAsset& asset); }
如果我错过了对我的示例至关重要的内容,请随时发表评论。
我试图返回一个对象UnitCubeInstance,它是类MeshObject的实例。 MeshObject具有对MeshAsset类的引用。我目前这样做的方法是不走运的,而且...
问题是,当您离开范围时,存储引用的本地对象被破坏: