C ++ избегает дублирования кода для const и неконстантное посещение

У меня есть класс, который должен вызывать метод посетителя для каждой переменной-члена. Примерно так:

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 можно будет использовать для «записи / обновления» посетителей.

7
задан Juraj Blaho 9 March 2011 в 21:39
поделиться