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

回答編集履歴

1

提示されているもう一つの実装方法と比較できていないため、比較できるよう追記しました。

2025/08/09 16:20

投稿

lehshell
lehshell

スコア1181

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
+ とする方が素直に感じます。