У меня есть:
class Foo {
public:
void log() { }
void a() {
log();
}
void b() {
log();
}
};
Есть ли способ, которым я могу иметь каждый метод Foo
, вызывать log()
, но без необходимости явного ввода log() в качестве первой строки каждой функции?
Я хочу сделать это, чтобы я мог добавлять поведение к каждой функции без необходимости проходить через каждую функцию и убедиться, что вызов сделан, а также так, что когда я добавляю новые функции, код автоматически добавляется...
Возможно ли это? Я не могу представить, как это сделать с помощью макросов, поэтому не уверен, с чего начать... Единственный способ, о котором я думал до сих пор, - добавить "шаг предварительной сборки", чтобы перед компиляцией я просматривал файл и редактировать исходный код, но это не кажется очень умным....
EDIT: просто для пояснения - я не хочу, чтобы log() явно вызывал себя. Он не должен быть частью класса.
EDIT: Я бы предпочел использовать методы, которые будут работать на кросс-платформе, и используя только stl.