Javaのクラスにアダプターを実装するのが最も簡単なC++でイベント処理スキームを実装する方法についていくつかの研究を行っています。問題は、以下に示すアプローチでは、派生したクラスで関数をオーバーライドしてすべてのアダプターを既に実装しておく必要があることです (リンカーがそれを必要とするため)。一方、派生クラスでのみアダプターを使用できるデリゲート戦略を使用すると、実装方法を考慮するとパフォーマンスが低下するはずです。
どれ、または他に何が最善のアプローチであるべきですか?
class KeyboardAdapter
{
public:
virtual void onKeyDown(int key) = 0;
}
class Controller : public KeyApadter
{
private:
void onKeyDown(int key);
}
void Controller::onKeyDown(int key) {}
class UserController : public Controller {
private:
void onKeyDown(int key);
}
void UserController::onKeyDown(int key) {
// do stuff
}
int main() {
UserController * uc = new UserController();
Controller * c = uc;
c->_onKeyDown(27);
}