返回对类变量的引用 - C ++

时间:2017-12-28 15:38:17

标签: c++ reference

所以,我有一个类World,其中有一个类Object实例的向量。现在,我正在尝试在World中创建一个函数,该函数返回对向量的一个对象的引用,因此在main()中,您可以直接将值更改为数组。它会是这样的:

class Object{
   //things
}

class World{
   private:
   vector <Object> ObjectsInWorld;

   public:
   Object functionThatReturnsReference(int index){
      //somehow return reference to ObjectsInWorld[index];
   }
}


int main(){
   World world;
   Object& obj = world.functionThatReturnsReference(2);
   //now changes made to obj should apply also to world's ObjectsInWorld[2]

   return 0;
}

这在C ++中是可行且合法的吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

只需定义函数以返回引用(请注意svn):

&
在你这样做之前,

但是至少再想一次。除非您的对象是纯粹的容器类型,否则您通常不希望人们弄乱您的内部状态,因为您的不变量会在用户没有意识到的情况下被侵犯。

答案 1 :(得分:0)

Object& World::functionThatReturnsReference(int index)
{
   /// throws an exception if index is out-of-range
   return ObjectsInWorld.at(index);
}