#include <iostream>
using namespace std;

enum class FruitType 
{
    AppleType = 0,
    OrangeType = 1,
    BananaType = 2,
};

class Fruit 
{
public:
    virtual FruitType fruit_type() const = 0;
};

class DriedFruit : virtual public Fruit
{
};

class Apple: virtual public Fruit 
{
public:
    FruitType fruit_type() const override { return FruitType::AppleType; }
};

class DriedApple: virtual public Apple, virtual public DriedFruit 
{
};

int main()
{
    Fruit *somefruit = new DriedApple;

    std::cout << "Is Apple? " << std::boolalpha << (somefruit->fruit_type() == FruitType::AppleType) << std::endl;

    return 0;
}