Есть класс обработчик событий окна:
class EventHandler
{
private:
std::vector<EventReciver*> recievers;
public:
EventHandler(GLFWwindow* window);
inline void add_reciever(EventReciver* rec) { recievers.push_back(rec); };
void resize_callback(int width, int height)
{
for (size_t i = 0; i < recievers.size(); i++)
{
recievers[i]->resize_callback(width,height);
};
};
void key_callback(int key, int scancode, int action, int mode)
{
for (size_t i = 0; i < recievers.size(); i++)
{
recievers[i]->key_callback(key, scancode,action,mode);
};
};
~EventHandler();
};
Для того , чтобы класс мог получать сообщения, он должен наследоваться от базового класса EventReciever:
class EventReciver
{
public:
inline EventReciver() {};
private:
void virtual resize_callback(int width, int height) {};
void virtual key_callback(int key, int scancode, int action, int mode) {};
friend class EventHandler;
};
При этом я хочу сделать так, чтобы класс-наследник мог получать сообщения только на определенные события и переопределять только нужные функции.
Например:
class A : public EventReciver
{
public:
private:
void resize_callback(int width, int height) override { ... };
};
class B : public EventReciver
{
public:
private:
void key_callback(int width, int height) override { ... };
};
При такой реализации будут вызываться функции , которые ничего не делают. Как этого избежать?