我有一个类应该为每个成员变量调用一个访问者方法。像这样的东西:
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
可以用于“编写/更新”访问者。