У меня есть класс, который должен вызывать метод посетителя для каждой переменной-члена. Примерно так:
class A{
int a, b, c;
public:
void accept(Visitor &visitor){
visitor.visit(a);
visitor.visit(b);
visitor.visit(c);
}
};
Как мне получить метод void accept () const
с тем же кодом без дублирования кода?
Очевидным решением проблемы дублирования является добавление метода:
void accept(Visitor &visitor) const {
visitor.visit(a);
visitor.visit(b);
visitor.visit(c);
}
Этот метод имеет именно то значение, которое я хочу, но я хотел бы избежать дублирования кода. Причина использования обоих методов состоит в том, чтобы иметь возможность читать переменные «читающим» посетителем и иметь хороший метод accept
const
. Тогда неконстантный accept
можно будет использовать для «записи / обновления» посетителей.