回答編集履歴
1
提示されているもう一つの実装方法と比較できていないため、比較できるよう追記しました。
answer
CHANGED
@@ -69,3 +69,34 @@
|
|
69
69
|
を
|
70
70
|
mutable std::map<int, bool> prevKey; // 前回の KEY 状態
|
71
71
|
と実装を変更しても Input.hpp の再リリースをしなくて済むためです。
|
72
|
+
|
73
|
+
これを
|
74
|
+
```C++
|
75
|
+
class IInput {
|
76
|
+
public:
|
77
|
+
virtual bool GetKey(int keyCode) const = 0;
|
78
|
+
virtual bool GetKeyDown(int keyCode) const = 0;
|
79
|
+
virtual bool GetKeyUp(int keyCode) const = 0;
|
80
|
+
};
|
81
|
+
|
82
|
+
class Input : public IInput {
|
83
|
+
// 省略
|
84
|
+
};
|
85
|
+
|
86
|
+
std::unique_ptr<IInput> CreateInput();
|
87
|
+
|
88
|
+
// CreateInput() 利用ソース
|
89
|
+
std::unique_ptr<IInput>pIInput = CreateInput();
|
90
|
+
```
|
91
|
+
とすると Interface のポインタを使うことになりますが、これであれば IInput を使わずに
|
92
|
+
単に
|
93
|
+
```C++
|
94
|
+
class Input {
|
95
|
+
// 省略
|
96
|
+
};
|
97
|
+
std::unique_ptr<Input> CreateInput();
|
98
|
+
|
99
|
+
// CreateInput() 利用ソース
|
100
|
+
std::unique_ptr<Input>pInput = CreateInput();
|
101
|
+
```
|
102
|
+
とする方が素直に感じます。
|