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