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

回答編集履歴

1

質問内容の変化に合わせた内容を記述

2021/02/08 07:48

投稿

fana
fana

スコア12227

answer CHANGED
@@ -2,4 +2,35 @@
2
2
  当然ながら TestClass3 とは何なのか? という定義が必要になります.
3
3
  そこを前方宣言で解決することはできません.
4
4
 
5
- tmp1 と TestClass3 の定義順を逆順にすれば良いように見えます.
5
+ tmp1 と TestClass3 の定義順を逆順にすれば良いように見えます.
6
+
7
+ ---
8
+
9
+ > namespace ts 内でコメントアウトされている
10
+ //class TestClass3;
11
+ の前方宣言を復活させ,
12
+ tmp1::tmp3()メソッドの実装を,class TestClass3の定義の後ろで行ってください.
13
+
14
+ を示しておく.
15
+
16
+ ```C++
17
+ namespace ts
18
+ {
19
+ //tmp1::tmp3()の宣言に必要
20
+ class TestClass3;
21
+
22
+ class tmp1
23
+ {
24
+ //ここではTestClass3の正体が不明なので,メソッドの実装は書けない
25
+ static TestClass3 tmp3();
26
+ };
27
+
28
+ class TestClass3
29
+ {
30
+ static tmp1 tmp4(){ tmp1 b; return b;}
31
+ };
32
+
33
+ //ここならTestClass3の定義が見えるから,メソッドの実装をここに書く
34
+ TestClass3 tmp1::tmp3(){ TestClass3 a; return a;}
35
+ }
36
+ ```