class Dollar;

class Money
{
public:
    Money(int amount):amount(amount){};
    static Dollar dollar(int amount);
protected:
    int amount;
};

class Dollar : public Money
{
public:
    Dollar(int amount):Money(amount){}
    //Dollar times(int value) const;
    //bool operator==(const Dollar& dollar) const;
};

Dollar Money::dollar(int amount)
{
    return Dollar(amount);
}

int main()
{
    Dollar d = Money::dollar(5);
}

