Как и в определении конструктора, которое правильно в вашем примере, каждому (внешнему) методу определения требуется префикс имени класса перед именем метода, которое находится в вашем случае Appointment::
.
Другим вариантом будет определение метода inline, который выглядит так:
class Appointment
{
public:
// ...
virtual bool occurs_on(int month, int day, int year){
if (date.getMonth()== month && date.getYear()= year && date.getDay()==day)
day= minute; // preparing a next question? ;)
return true; // indentation error or even worse?
}
private:
int hour, minute;
// ...
Date date;
};
Определение методов inline может быть полезно для локальных классов, но часто это приводит к плохому стилю.