Como garantir que todo método de uma classe chame outro método primeiro?
Eu tenho :
class Foo {
public:
void log() { }
void a() {
log();
}
void b() {
log();
}
};
Existe uma maneira que eu possa ter cada método deFoo
, ligarlog()
, mas sem eu precisar digitar explicitamente log () como a primeira linha de cada função? Quero fazer isso, para que eu possa adicionar comportamento a cada função sem ter que passar por cada função e garantir que a chamada seja feita, e também para que quando eu adicionar novas funções, o código seja adicionado automaticamente ...
Isso é possível? Não consigo imaginar como fazer isso com as macros, por isso não tenho certeza por onde começar ... A única maneira que pensei até agora é adicionar uma "etapa de pré-construção", para que, antes de compilar, verifique o arquivo e edite o código fonte, mas isso não parece muito inteligente ...
Edição: Apenas para esclarecer - eu não quero log () para chamar-se obviamente. Não precisa fazer parte da aula.
EDIT: Eu preferiria usar métodos que funcionassem em várias plataformas e usando apenas o stl.