返回对类中变量的引用 - c ++

时间:2018-01-17 12:00:05

标签: c++ vector

所以我有一个类Scene,它包含另一个类'Object'的元素向量。现在,在我的main()中,我想对Object进行更改,这也必须应用于类中Object向量内的对象实例。 我的想法是创建一个函数,将对象放在向量中,并返回对它的引用,这样从main可以更改它并使更改影响向量。它只与一个对象完美配合。问题是,如果我使用多个对象,它就会停止工作,并且没有任何对象改变它的位置,甚至不会改变之前工作的第一个对象。有什么问题?有没有更好的方法来做到这一点(我是c ++ hehe的新手) 谢谢! 我的代码是这样的:

class Object{
private:
    int posX, posY;
    string name;

public:
    Object(){
        name = "Object" + id;
    }

    int getPositionX(){
        return posX;
    }

    int getPositionY(){
        return posY;
    }

    void setPosition(int positionX, int positionY){
        posX = positionX;
        posY = positionY;
    }

};

我的场景类:

class Scene{
private:
    vector <Object> objectsInScene;

public:
    Scene(){
        cout << "Scene created";
    }

    vector <Object> getObjectsInScene(){
        return objectsInScene;
    }

    Object& insertObject(Object newObject){
        objectsInScene.push_back(newObject);
        return objectsInScene[objectsInScene.size()-1];
    }

};

和我的主要:

int main(){
    Scene mScene;
    Object myObj;
    Object secondObj;
    secondObj.setPosition(15,15);
    myObj.setPosition(7,7);
    Object& myObject = mScene.insertObject(myObj);
    Object& secondObject = mScene.insertObject(secondObj);

    //other things
    switch(cin.get()){
       case 'w':
          myObject.setPosition(3,3);///This is the one that doesn't work
          break;
    }
}

0 个答案:

没有答案