Puoi definire un membro virtuale e ridefinirlo con calendar in questo modo:

class clock
{

public:
virtual void advice(void);

...

};

class calendar : public clock
{

public:
void advice(void);

};

ovviamente questa tecnica non e' pensata per situazioni del genere però puoi adattarla tu.

ciao