C++ イベントメカニズム実装:基本とサンプルコード
C++でイベントメカニズムを実装する場合、コールバック関数や観察者パターンを使用する必要があります。以下は簡単な実装方法です:
- コールバック関数:イベントクラスを定義し、そのクラスにコールバック関数のポインタを含めます。イベントが発生した際は、コールバック関数を呼び出してイベントを処理します。以下に示すのは例示的なコードです:
#include <iostream>
#include <functional>
class Event {
public:
using Callback = std::function<void()>;
Event(Callback callback) : m_callback(callback) {}
void trigger() {
if (m_callback) {
m_callback();
}
}
private:
Callback m_callback;
};
void handleEvent() {
std::cout << "Event handled" << std::endl;
}
int main() {
Event event(handleEvent);
event.trigger();
return 0;
}
- Observerパターン:SubjectクラスとObserverクラスを定義し、SubjectクラスにはObserverを登録し通知するメソッドが含まれています。以下にコード例を示します。
#include <iostream>
#include <vector>
class Observer {
public:
virtual void update() = 0;
};
class Subject {
public:
void addObserver(Observer* observer) {
m_observers.push_back(observer);
}
void notifyObservers() {
for (Observer* observer : m_observers) {
observer->update();
}
}
private:
std::vector<Observer*> m_observers;
};
class EventObserver : public Observer {
public:
void update() override {
std::cout << "Event handled" << std::endl;
}
};
int main() {
Subject subject;
EventObserver eventObserver;
subject.addObserver(&eventObserver);
subject.notifyObservers();
return 0;
}
この2つの簡単なイベントメカニズムの実装方法は、実際の開発ではニーズに応じて適切な方法を選択してイベントメカニズムを実装することができます。