变量内部变量的问题一旦改变就会恢复

problem with variable inside variable reverts once changed changed

我遇到了一个问题,一旦我改变了一个变量,它在以后引用时似乎没有改变 在代码中。

class foo
{
private:
    string name;
public:
    foo(string _name)
    :name(_name)
    {}
    void info()
    { cout<<name; }
    void newName(string new_name)
    { name = new_name; }
};

class bar
{
private:
    string _name;
    vector<foo> _content;
public:
    foo at(int i)
    { return _content.at(i); }
    void push_back(foo newFoo)
    { _content.push_back(newFoo); }
};

int main()
{
    foo test("test");
    bar kick;
    kick.push_back(test);
    kick.at(0).newName("nice");
    kick.at(0).info();

    return 0;
}

我希望程序 return "nice" 但它 returns "test"。 我想这与范围有关,但我不知道。 我将如何编写可以解决此问题的内容?

这个成员函数

foo at(int i)
    { return _content.at(i); }

returns 存储在向量中的对象的副本。

如果你想得到预期的结果那么return参考。

foo & at(int i)
    { return _content.at(i); }

const foo & at(int i) const
    { return _content.at(i); }