这是我的问题

Class MClass {

public:

    void Add(OtherClass* objects) {
        _objects = objects;
    }

private:

    OtherClass* _objects;
}

//otherfile.cpp


void Setup() {

    MClass myObj;
    OtherClass obj[NUMBER_OF_OBJECTS];

    //obj initialization here
    //...

    myObj.Add(obj);
}


这将导致RT错误,因为* obj在函数主体结束后减小。

但是,如何使这个有效呢?

我喜欢先初始化一个对象,然后再将其分配给其他类。

编辑

我不想在这里使用存储类或其他东西,我只想要一个原始数组,因为使用它非常昂贵。它的功能在这里不会减轻我的问题。

那么我该如何以原始数组的方式进行呢?

最佳答案

Class MClass {
public:
    void Add(std::vector<OtherClass> objects) {
        _objects = std::move(objects);
    }
private:
    std::vector<OtherClass> _objects;
}

//otherfile.cpp
void Setup() {
    MClass myObj;
    std::vector<OtherClass> obj(NUMBER_OF_OBJECTS);
    myObj.Add(std::move(obj));
}

10-08 08:18