一种有效的方法,该方法返回对C ++中的另一个类对象具有引用的对象

问题描述 投票:0回答:1

我试图返回对象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类的引用。我目前这样做的方法是不走运的,而且...

c++
1个回答
2
投票

问题是,当您离开范围时,存储引用的本地对象被破坏:

© www.soinside.com 2019 - 2024. All rights reserved.