首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免带有默认参数的构造函数的多义性?

如何避免带有默认参数的构造函数的多义性?
EN

Stack Overflow用户
提问于 2016-11-03 01:21:59
回答 1查看 115关注 0票数 0

假设我有一个class Point,它可以用直角坐标和极坐标构造。我还希望有默认的参数,它将在坐标(0,0)中创建Point

所以,我想要一些代码:

代码语言:javascript
复制
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,那么我们又会得到一个关于歧义的错误。

如何正确设计这样的构造器?

EN

回答 1

Stack Overflow用户

发布于 2016-11-03 01:41:40

在这种情况下,使用GOF的Builder模式是有意义的。

就像这样,

代码语言:javascript
复制
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 move
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40386017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档