gpt4 book ai didi

c++ - 多个不同的构造函数作为函数参数

转载 作者:行者123 更新时间:2023-11-28 06:34:38 25 4
gpt4 key购买 nike

我得到了这样的东西:

class Object{  
A a;
B b;
C c;
}

一个名为Object 的类,它具有三个属性。在我的例子中,A、B 和 C 是结构。Object 的构造函数看起来像这样:

Object::Object(A a, B b, C c)
{
this->a = a;
this->b = b;
this->c = c;
}

我试图达到的是,用户可以调用 Object 的构造函数并设置这些值中的任何一个,而其余值应保留某个默认值。

例如那些函数调用应该以某种方式工作:

int main() {
Object(A(),B(),C());
Object(A()); // B and C stay on some default value
Object(A(),C()); // B stays on some default value
}

我已经用 C++ 默认参数试过了。这没有用,因为如果不为 A() 提供值,则不可能为 B() 提供用户定义的值。

无论如何,上面的代码只是一个简化的例子。我的代码应该是可扩展的。将来可能会有超过三个值的对象,我不想为每个可能的调用案例创建不同的构造函数。

您对此有什么想法吗?有没有可能做到这一点?

最佳答案

尝试构建器模式,在 wikipedia 上查看, 就在这里 SO然而another reference :

对于 C++,它会是这样的:

class A;
class B;
class C;

class Obj {
static Obj Obj::Build() { return Obj(); }

Obj & SetA(...) { ... }
Obj & SetB(...) { ... }
Obj & SetC(...) { ... }

//...
};

main() {
Obj o = Obj::Build()
.SetA(<params to A>)
.SetC(<params to c>);
//Note: B was not named.
}

关于c++ - 多个不同的构造函数作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26947093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com