>>886

struct line_mover : public visitor
{
 void visit(直線)
 {
  直線.開始点.x = 1;
 }
 void visit(円){} // visitorで何もしないデフォルトの実装を用意してもよし
 void visit(円弧){}
};

図形.accept(line_mover());

じゃ、だめなん?