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

Multiple, varying Constructors as Function Parameters

本文关键字:函数 参数 构造函数      更新时间:2023-10-16

我得到了这样的东西:

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() 提供用户定义的值。

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

你对此有什么想法吗?有没有可能这样做?

尝试构建器模式,在维基百科上检查它,就在SO上,还有一个参考:

对于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.
}