回答編集履歴

4

コード内コメントの誤変換を修正

2021/01/28 04:56

投稿

fana
fana

スコア11996

test CHANGED
@@ -132,7 +132,7 @@
132
132
 
133
133
  protected:
134
134
 
135
- //こいつが return this とかすること事態に何の意味もない
135
+ //こいつが return this とかすること自体に何の意味もない(ので戻り値を廃止)
136
136
 
137
137
  void func(){ std::cout << "func" << std::endl; }
138
138
 

3

コメントを付けて追記

2021/01/28 04:56

投稿

fana
fana

スコア11996

test CHANGED
@@ -113,3 +113,47 @@
113
113
  }
114
114
 
115
115
  ```
116
+
117
+
118
+
119
+ ---
120
+
121
+
122
+
123
+ 実はこんな話?
124
+
125
+
126
+
127
+ ```C++
128
+
129
+ class A
130
+
131
+ {
132
+
133
+ protected:
134
+
135
+ //こいつが return this とかすること事態に何の意味もない.
136
+
137
+ void func(){ std::cout << "func" << std::endl; }
138
+
139
+ };
140
+
141
+
142
+
143
+ class B : public A
144
+
145
+ {
146
+
147
+ public:
148
+
149
+ B hoge(){ return B(*this).Call_func_and_Return_Ref(); }
150
+
151
+ private:
152
+
153
+ //要は,hoge()を↑のように書けるようにするために,こんなヘルパが欲しいだけの話なのでは?
154
+
155
+ B &Call_func_and_Return_Ref(){ func(); return *this; }
156
+
157
+ };
158
+
159
+ ```

2

B* → auto*

2021/01/28 04:54

投稿

fana
fana

スコア11996

test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
  B b;
44
44
 
45
- B* pb = b.GetThis();
45
+ auto* pb = b.GetThis();
46
46
 
47
47
  pb->Test();
48
48
 

1

参照のやつを追加

2021/01/28 01:27

投稿

fana
fana

スコア11996

test CHANGED
@@ -53,3 +53,63 @@
53
53
  }
54
54
 
55
55
  ```
56
+
57
+
58
+
59
+ > できれば参照を利用したい
60
+
61
+
62
+
63
+ 参照でも同様.
64
+
65
+
66
+
67
+ ```C++
68
+
69
+ class A
70
+
71
+ {
72
+
73
+ public:
74
+
75
+ virtual ~A(){}
76
+
77
+ virtual A& GetThisRef(){ return *this; }
78
+
79
+ };
80
+
81
+
82
+
83
+ class B : public A
84
+
85
+ {
86
+
87
+ public:
88
+
89
+ virtual B& GetThisRef() override { return *this; }
90
+
91
+ void Test() const { std::cout << "This is B" << std::endl; }
92
+
93
+ };
94
+
95
+
96
+
97
+ //main
98
+
99
+ int main(void)
100
+
101
+ {
102
+
103
+ B b;
104
+
105
+ auto &rb = b.GetThisRef();
106
+
107
+ rb.Test();
108
+
109
+
110
+
111
+ return 0;
112
+
113
+ }
114
+
115
+ ```