作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了两个类。第一个类接受一个字符串作为参数,并将其设置为人名。
第二类是我创建一个保存对象的 vector 对象的地方。我需要这个对象稍后在代码中创建附加功能。 (此代码是我的主代码遇到的问题的示例)
在主要部分中,我创建了人和我尝试修改的人的对象。
修改代码后,它会恢复。
我尝试过引用所有内容,但它不起作用。我不确定我做错了什么。
创建对象的第一个类(这些对象将存储在 vector 内)
class person {
// Private
string name;
public:
// Constructor
person(const std::string& n) : name(n) {};
std::string getName() {
return name;
}
void setName(const std::string& n) {
name = n;
}
};
这是用于创建采用对象 vector 的对象的类。
class people {
// Private
vector<person> _peeps;
public:
// Constructor
people(const vector<person>& r) : _peeps(r) {};
vector<person> getRobots() {
return _peeps;
}
void addRobot(const person& r) {
_peeps.push_back(r);
}
};
这是代码的主要部分,我在其中创建对象并打印输出。
int main(){
string arr[5] = { "john", "eddison", "jeves", "elenour", "curtis"};
vector<person> rob;
for (auto x : arr) {
rob.push_back(person(x));
}
people robots = people(rob);
for (person &x : robots.getRobots()) {
cout << x.getName() << ", ";
}
cout << "\n2\n";
for (person &x : robots.getRobots()) {
x.setName(x.getName() + "x");
cout << x.getName() << ", ";
}
cout << "\n3\n";
for (person &x : robots.getRobots()) {
cout << x.getName() << ", ";
}
}
这是代码的输出
1(我输出对象 vector 内的所有值)
2(我编辑 vector 内的所有值)
3(测试以显示值是否已更改)
1
john, eddison, jeves, elenour, curtis,
2
johnx, eddisonx, jevesx, elenourx, curtisx,
3
john, eddison, jeves, elenour, curtis,
为什么 3 处的输出与 2 处的输出不同?
最佳答案
您返回拷贝而不是引用,
使用
const std::vector<person>& getRobots() const { return _peeps; }
std::vector<person>& getRobots() { return _peeps; }
关于c++ - 当更改对象 vector 的对象时,值不断重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65364243/
安装并修复我的 VS2015 实例后,我仍然无法让智能感知(服务器端)在我的 MVC View 中工作。当我在 session 中第一次打开 .cshtml 文件并找到 Activitylog 文件时
我是一名优秀的程序员,十分优秀!