fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. enum class FruitType
  5. {
  6. AppleType = 0,
  7. OrangeType = 1,
  8. BananaType = 2,
  9. };
  10.  
  11. class Fruit
  12. {
  13. public:
  14. virtual FruitType fruit_type() const = 0;
  15. };
  16.  
  17. class DriedFruit : virtual public Fruit
  18. {
  19. };
  20.  
  21. class Apple: virtual public Fruit
  22. {
  23. public:
  24. FruitType fruit_type() const override { return FruitType::AppleType; }
  25. };
  26.  
  27. class DriedApple: virtual public Apple, virtual public DriedFruit
  28. {
  29. };
  30.  
  31. int main()
  32. {
  33. Fruit *somefruit = new DriedApple;
  34.  
  35. std::cout << "Is Apple? " << std::boolalpha << (somefruit->fruit_type() == FruitType::AppleType) << std::endl;
  36.  
  37. return 0;
  38. }
Success #stdin #stdout 0s 4300KB
stdin
Standard input is empty
stdout
Is Apple? true