У меня есть класс, который должен вызывать метод посетителя для каждой переменной-члена. Примерно так:
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
можно будет использовать для «записи / обновления» посетителей.