fork download
  1. #include <iostream>
  2.  
  3. class A
  4. {
  5. public:
  6. virtual void func() = 0;
  7. };
  8.  
  9. class B
  10. {
  11. public:
  12. void func1() { std::cout << "func1\n"; };
  13. void func2() { std::cout << "func2\n"; };
  14. };
  15.  
  16. class C1 : public A
  17. {
  18. private:
  19. B &m_b;
  20. public:
  21. C1(B &b) : m_b(b) {}
  22. void func() override { m_b.func1(); }
  23. };
  24.  
  25. class C2 : public A
  26. {
  27. private:
  28. B &m_b;
  29. public:
  30. C2(B &b) : m_b(b) {}
  31. void func() override { m_b.func2(); }
  32. };
  33.  
  34. void doSomeStuff(A &a)
  35. {
  36. a.func();
  37. }
  38.  
  39. int main()
  40. {
  41. B b;
  42.  
  43. {
  44. C1 c(b);
  45. doSomeStuff(c);
  46. }
  47.  
  48. {
  49. C2 c(b);
  50. doSomeStuff(c);
  51. }
  52.  
  53. return 0;
  54. }
Success #stdin #stdout 0s 16064KB
stdin
Standard input is empty
stdout
func1
func2