Я хочу создать класс только для установки параметров функции. Я использую свободный интерфейс для этого. Какая-то функция возвращает объект к заданным параметрам, и реальный код будет выполняться в деструкторе этого объекта.
Прежде всего, это хорошая идея? Это обычный способ улучшить читаемость кода, когда у меня много параметров? Или, может быть, я должен использовать другой способ сделать это? Я был бы рад проконсультировать по этому поводу.
Если все в порядке, как я могу предотвратить случайное сохранение объекта в локальную переменную? В этом случае деструктор будет вызываться в конце области видимости переменной.
Пример:
class MyClass {
public:
~MyClass() noexcept {
// some code to execute immediately after setting params A and B
}
// abstract setting methods
MyClass &SetA() { return *this; }
MyClass &SetB() { return *this; }
};
MyClass SomeFunction() {
return MyClass();
}
int main() {
// Correct usage:
SomeFunction()
.SetA()
.SetB();
// destructor here
// I want to prevent it:
auto my_class = SomeFunction();
my_class
.SetA()
.SetB();
{
auto my_class2 = SomeFunction();
my_class2
.SetA()
.SetB();
// destructor of `my_class2` here
}
// destructor of `my_class` here.
return 0;
}