online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
#include <string> #include <iostream> #include <vector> class EventBase { public: virtual std::string getData() const = 0; }; class EventA : public EventBase { public: std::string getData() const override { return "Event A"; } }; class EventB : public EventBase { public: std::string getData() const override { return "Event B"; } }; template<class T_Event> class IEventHandler { public: virtual void onEvent(const T_Event& e) = 0; virtual void onError() = 0; }; class ClientBase { public: virtual void startReceiving() = 0; virtual void stopReceiving() { std::cout << "ClientBase::stopReceiving" << std::endl; } }; class ClientA : public ClientBase, public IEventHandler<EventA> { public: void onEvent(const EventA& e) override { std::cout << "ClientA::onEvent - e.getData()= " << e.getData() << std::endl; }; void onError() override { std::cout << "ClientA::onError" << std::endl; }; void startReceiving() override { std::cout << "ClientA::startReceiving" << std::endl; }; }; class ClientB : public ClientBase, public IEventHandler<EventB> { public: void onEvent(const EventB& e) override { std::cout << "ClientB::onEvent - e.getData()= " << e.getData() << std::endl; }; void onError() override { std::cout << "ClientB::onError" << std::endl; }; void startReceiving() override { std::cout << "ClientB::startReceiving" << std::endl; }; }; int main(int, char**) { //User Code ClientA ca; ClientB cb; std::vector<ClientBase*> baseClients; baseClients.push_back(&ca); baseClients.push_back(&cb); for(const auto client : baseClients){ client->startReceiving(); } //Framework Code EventA a; EventB b; std::vector<IEventHandler<EventA>*> eventHandlersA; std::vector<IEventHandler<EventB>*> eventHandlersB; eventHandlersA.push_back(&ca); eventHandlersA[0]->onError(); eventHandlersA[0]->onEvent(a); eventHandlersB.push_back(&cb); eventHandlersB[0]->onError(); eventHandlersB[0]->onEvent(b); //User Code for(const auto client : baseClients){ client->stopReceiving(); } }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue