Несколько различных конструкторов в качестве параметров функции

0

У меня есть что-то вроде этого:

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

Определенный класс Object, который имеет три свойства. A, B и C - это структуры в моем случае. Конструктор объекта выглядит примерно так:

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

То, что я пытаюсь достичь, заключается в том, что пользователь может вызвать конструктор объекта и установить любое из этих значений, в то время как остальные из них должны оставаться на некотором значении по умолчанию.

Например, эти вызовы функций должны работать как-то:

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++. Это не сработало, потому что невозможно задать пользовательское значение для B() без предоставления значения для A().

В любом случае, приведенный выше код является просто упрощенным примером. Мой код должен быть расширяемым. В будущем могут быть объекты с более чем тремя значениями, и я не хочу создавать другой конструктор для каждого возможного случая вызова.

У вас есть идеи по этому поводу? Есть ли возможность сделать это?

Теги:
function
constructor
parameters

1 ответ

1

Попробуйте шаблон строителя, проверьте его на википедии, прямо здесь, на qaru.site/questions/16242/... и еще одну ссылку:

Для 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.
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню