变量内部变量的问题一旦改变就会恢复
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); }
我遇到了一个问题,一旦我改变了一个变量,它在以后引用时似乎没有改变 在代码中。
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); }