1

このコードを前処理する必要があります。

line (0,0) (5,5)

ここで、(0,0) は開始 x および y 座標を意味し、2 番目の (5,5) は終了 x および y 座標を意味します。

を使用して開始座標を取得できました

#define line(x1,y1)   myArray->shapes.push_back(new Line(x1,y1));

2 番目の括弧を処理するにはどうすればよいですか?

4

2 に答える 2

7

次のようなものはどうでしょう。

struct LineCreator {
  LineCreator(type_of_shapes &shapes, int x1, int y1)
    : shapes_(shapes), x1_(x1), y1_(y1)
  {}
  void operator() (int x2, int y2) {
    shapes_.push_back(new Line(x1_, y1_, x2, y2));
  }
private:
  type_of_shapes &shapes_;
  int x1_, y1_;
};

#define line(x, y) LineCreator(myArray->shapes, (x), (y))
于 2013-01-09T08:49:46.467 に答える
1

次のように変更します。

line (0,0,5,5)

これで、次のマクロを作成できます。

#define line(x1,y1,x2,y2)   myArray->shapes.push_back(new Line(x1,y1)); \
                            myArray->shapes.push_back(new Line(x2,y2));
于 2013-01-09T08:46:05.000 に答える