teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

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

2021/01/28 04:56

投稿

fana
fana

スコア12234

answer CHANGED
@@ -65,7 +65,7 @@
65
65
  class A
66
66
  {
67
67
  protected:
68
- //こいつが return this とかすること事態に何の意味もない
68
+ //こいつが return this とかすること自体に何の意味もない(ので戻り値を廃止)
69
69
  void func(){ std::cout << "func" << std::endl; }
70
70
  };
71
71
 

3

コメントを付けて追記

2021/01/28 04:56

投稿

fana
fana

スコア12234

answer CHANGED
@@ -55,4 +55,26 @@
55
55
 
56
56
  return 0;
57
57
  }
58
+ ```
59
+
60
+ ---
61
+
62
+ 実はこんな話?
63
+
64
+ ```C++
65
+ class A
66
+ {
67
+ protected:
68
+ //こいつが return this とかすること事態に何の意味もない.
69
+ void func(){ std::cout << "func" << std::endl; }
70
+ };
71
+
72
+ class B : public A
73
+ {
74
+ public:
75
+ B hoge(){ return B(*this).Call_func_and_Return_Ref(); }
76
+ private:
77
+ //要は,hoge()を↑のように書けるようにするために,こんなヘルパが欲しいだけの話なのでは?
78
+ B &Call_func_and_Return_Ref(){ func(); return *this; }
79
+ };
58
80
  ```

2

B* → auto*

2021/01/28 04:54

投稿

fana
fana

スコア12234

answer CHANGED
@@ -20,7 +20,7 @@
20
20
  int main(void)
21
21
  {
22
22
  B b;
23
- B* pb = b.GetThis();
23
+ auto* pb = b.GetThis();
24
24
  pb->Test();
25
25
 
26
26
  return 0;

1

参照のやつを追加

2021/01/28 01:27

投稿

fana
fana

スコア12234

answer CHANGED
@@ -25,4 +25,34 @@
25
25
 
26
26
  return 0;
27
27
  }
28
+ ```
29
+
30
+ > できれば参照を利用したい
31
+
32
+ 参照でも同様.
33
+
34
+ ```C++
35
+ class A
36
+ {
37
+ public:
38
+ virtual ~A(){}
39
+ virtual A& GetThisRef(){ return *this; }
40
+ };
41
+
42
+ class B : public A
43
+ {
44
+ public:
45
+ virtual B& GetThisRef() override { return *this; }
46
+ void Test() const { std::cout << "This is B" << std::endl; }
47
+ };
48
+
49
+ //main
50
+ int main(void)
51
+ {
52
+ B b;
53
+ auto &rb = b.GetThisRef();
54
+ rb.Test();
55
+
56
+ return 0;
57
+ }
28
58
  ```