#include<iostream>
#include<deque>
struct testStr {
std::deque<int> queue;
};
testStr arr[1] = {
testStr()
};
testStr t = testStr();
void func() {
testStr s = arr[0];
s.queue.push_back(5);
t.queue.push_back(6);
}
void func2() {
std::cout << arr[0].queue.empty() << ' ';
std::cout << t.queue.empty() << '\n';
}
int main() {
func();
func2();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是
1 0
Run Code Online (Sandbox Code Playgroud)
我花了一个小时来追踪这个"错误"并且不明白为什么会出现这种行为以及如何克服它.感谢这里的任何和所有帮助.
testStr s = arr[0];
Run Code Online (Sandbox Code Playgroud)
您复制arr[0]到本地变量s,然后修改s,而不是arr[0].在同一时间arr[0]保持不变.
如果您需要修改arr[0],请使用参考:
testStr &s = arr[0];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |