回答編集履歴

1

追記

2019/06/10 12:34

投稿

episteme
episteme

スコア16614

test CHANGED
@@ -3,3 +3,97 @@
3
3
 
4
4
 
5
5
  であるなら、その後 getter[0] を書き換えると setter[0] も書き換わるハズ。やってみて。
6
+
7
+
8
+
9
+ [追記] 勘違いされても困るから:
10
+
11
+
12
+
13
+ ```C++
14
+
15
+ #include <iostream>
16
+
17
+ #include <vector>
18
+
19
+ using namespace std;
20
+
21
+
22
+
23
+ struct Data{
24
+
25
+ int aoi = 0;
26
+
27
+ };
28
+
29
+
30
+
31
+ class A {
32
+
33
+ public:
34
+
35
+ std::vector<Data*> sender;
36
+
37
+ public:
38
+
39
+ void a(std::vector<Data*> &getter);
40
+
41
+ };
42
+
43
+
44
+
45
+ void A::a(std::vector<Data*> &getter) {
46
+
47
+ for (int i=0; i<10; i++) {
48
+
49
+ sender.push_back(new Data);
50
+
51
+ }
52
+
53
+ getter = sender; //ここは"アドレス"を書き換えているという認識で正しいですか?
54
+
55
+ }
56
+
57
+
58
+
59
+ int main() {
60
+
61
+
62
+
63
+ A* aaa = new A();
64
+
65
+ std::vector<Data*> sss;
66
+
67
+ aaa -> a(sss);
68
+
69
+
70
+
71
+ // aaa->sender[0] を書き換えて
72
+
73
+ Data* p = new Data(); p->aoi = 9;
74
+
75
+ aaa->sender[0] = p;
76
+
77
+ // 両者をプリント
78
+
79
+ for ( Data* item : sss ) { cout << item->aoi << ' '; } cout << endl;
80
+
81
+ for ( Data* item : aaa->sender ) { cout << item->aoi << ' '; } cout << endl;
82
+
83
+ return 0;
84
+
85
+ }
86
+
87
+ ```
88
+
89
+ 実行結果
90
+
91
+ ```
92
+
93
+ 0 0 0 0 0 0 0 0 0 0
94
+
95
+ 9 0 0 0 0 0 0 0 0 0
96
+
97
+ ```
98
+
99
+ ってことで、**コピーされてる**ね。