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

回答編集履歴

1

追記

2018/11/16 05:39

投稿

fana
fana

スコア12285

answer CHANGED
@@ -9,4 +9,54 @@
9
9
 
10
10
  ...
11
11
  }
12
+ ```
13
+
14
+ ---
15
+
16
+ 都度Test1()から抜けたいなら,どこかに情報を覚えておいて,Test1()を呼び出す側で分岐するとかで.
17
+
18
+ ```ここに言語を入力
19
+ //情報
20
+ struct Context
21
+ {
22
+ int B;
23
+ void (*pNextWork)( Context* );
24
+ };
25
+
26
+ //
27
+ void Test2( Context *pC )
28
+ {
29
+ std::cout << "Test2" << std::endl;
30
+ pC->pNextWork = nullptr;
31
+ }
32
+
33
+ //
34
+ void Test1( Context *pC )
35
+ {
36
+ std::cout << "Test1" << std::endl;
37
+ if( !(rand() % 5) ){ pC->B = 0; } //※(仮)いつか終わるように
38
+
39
+ if( pC->B == INT_MAX )
40
+ {
41
+ pC->pNextWork = Test1;
42
+ return;
43
+ }
44
+
45
+ pC->pNextWork = Test2;
46
+ }
47
+
48
+ //
49
+ int main(void)
50
+ {
51
+ Context Ctxt;
52
+ Ctxt.B = INT_MAX;
53
+ Ctxt.pNextWork = Test1;
54
+
55
+ while( Ctxt.pNextWork )
56
+ {
57
+ Ctxt.pNextWork( &Ctxt );
58
+ }
59
+
60
+ return 0;
61
+ }
12
62
  ```