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

回答編集履歴

2

再送

2019/07/02 12:50

投稿

LouiS0616
LouiS0616

スコア35676

answer CHANGED
File without changes

1

追記

2019/07/02 12:50

投稿

LouiS0616
LouiS0616

スコア35676

answer CHANGED
@@ -20,4 +20,36 @@
20
20
  std::cout << "funcB\n";
21
21
  if(useFuncA) func = funcA;
22
22
  }
23
+ ```
24
+
25
+ > すみません、根本的に私の質問が間違っていて
26
+ 違う関数ではなく同じ関数で実引数を交互に変えるというものでした..
27
+
28
+ スマートかは分かりませんが、一つの案として。ほぼ変わってないですね。
29
+
30
+ ```C++
31
+ #include <iostream>
32
+ #include <functional>
33
+ #include <string>
34
+
35
+ void funcA(void);
36
+ void funcB(void);
37
+
38
+ namespace {
39
+ bool useParamA = true;
40
+ bool useParamB = true;
41
+ std::function<void(void)> func = funcA;
42
+ }
43
+
44
+ void funcImpl(const std::string& arg) {
45
+ std::cout << arg << "\n";
46
+ }
47
+ void funcA(void) {
48
+ funcImpl("A");
49
+ if(useParamB) func = funcB;
50
+ }
51
+ void funcB(void) {
52
+ funcImpl("B");
53
+ if(useParamA) func = funcA;
54
+ }
23
55
  ```