fork download
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. class Thing {
  7. int a;
  8. public:
  9. Thing(int v = 0): a (v) {}
  10. const char * type_name(){ return "Thing"; }
  11. int value() { return a; }
  12. };
  13.  
  14. class OtherThing : public Thing {
  15. public:
  16. OtherThing(int v): Thing(v) {}
  17.  
  18. const char * type_name() { return "Other Thing"; }
  19. };
  20.  
  21. union Something {
  22. Something(int v) : t(v) {}
  23. Thing t;
  24. OtherThing ot;
  25. };
  26.  
  27. int main() {
  28. Something sth{42};
  29. std::cout << sth.t.type_name() << "\n";
  30. std::cout << sth.t.value() << "\n";
  31.  
  32. std::cout << sth.ot.type_name() << "\n";
  33. std::cout << sth.ot.value() << "\n";
  34. return 0;
  35. }
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
Thing
42
Other Thing
42