#include <iostream>
#include <vector>
using namespace std;

struct Listener {
  virtual void callback() = 0;
};

struct Listener1 : public Listener{
  void callback() override {
  	cout << "listener1" << endl;
  }
};

struct Processor {
  vector<Listener*> listeners;
  
  void notify() {
    for(auto &listener : listeners) {
    	listener->callback();
    }
  }
};

int main() {
	Listener1 listener1;
	
	Processor processor;
	
	processor.listeners.push_back(&listener1);
	
	processor.notify();
	
	return 0;
}