假设我有一个class Point,它可以用直角坐标和极坐标构造。我还希望有默认的参数,它将在坐标(0,0)中创建Point。
所以,我想要一些代码:
Class Point{
public:
Point(double x = 0, double y = 0); // Rectangular coordinates
Pount(double r = 0, double a = 0); // Polar coordinates (radius and angle)
...
}但显然这是一个糟糕的决定,因为我们甚至不能调用Point()。因此,作为变通方法,我们可以使用非默认的第一个参数来构造一个构造器(即只使用int x, ...)。但是,如果我们只想指定x,那么我们又会得到一个关于歧义的错误。
如何正确设计这样的构造器?
发布于 2016-11-03 01:41:40
在这种情况下,使用GOF的Builder模式是有意义的。
就像这样,
BubbleBulder bb;
bb.setGeomtery(x, y, radius); // or separate setters for each members
bb.setColor(new Color(0, 0 ,0));
std::unique_ptr<Bubble> bubblePtr = bb.createInstance(); // or movehttps://stackoverflow.com/questions/40386017
复制相似问题