すべてのメンバー変数に対してvisitorメソッドを呼び出す必要があるクラスがあります。このようなもの:
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
そうすれば、non-constは訪問者の「書き込み/更新」に使用できるようになります。