Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- // INTERFACES
- class Receive_handler {
- public:
- virtual void receive(void* ptr, const std::size_t size) = 0;
- };
- class Common_interface {
- public:
- Common_interface(Receive_handler& receiver) : receiver_(receiver) {}
- virtual void send(void* ptr, const std::size_t size) = 0;
- protected:
- Receive_handler& receiver_;
- };
- // IMPLEMENTATION
- class Uart: public Common_interface {
- public:
- Uart(Receive_handler& receiver) : Common_interface(receiver) {}
- void send(void* ptr, const std::size_t size) override {
- cout << "uart: " << size << endl;
- }
- void set_new_data(void* ptr, const std::size_t size) {
- receiver_.receive(ptr, size);
- }
- };
- class User : public Receive_handler {
- public:
- User(Common_interface& sender) : sender_(sender) {}
- void receive(void* ptr, const std::size_t size) override {
- cout << "user: " << size << endl;
- }
- void do_work_with_send(void* ptr, const std::size_t size) {
- sender_.send(ptr, size);
- }
- private:
- Common_interface& sender_;
- };
- extern Uart uart;
- User user(uart);
- Uart uart(user);
- int main() {
- int buffer[2];
- user.do_work_with_send(buffer, sizeof(buffer));
- int buffer2[5];
- uart.set_new_data(buffer2, sizeof(buffer2));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement