Есть ли способ в C++ для обеспечения вызовов функции во время компиляции таким образом, что этот вызов будет разрешен:Принудительно вызовов функций во время компиляции в C++
obj.reset().setParam1(10).setParam2(20);
, но это один не будет компилироваться:
obj.reset().setParam1(10);
Я хочу, чтобы не задавать все параметры в одной функции, поскольку их слишком много; поэтому я предпочитаю использовать нечто похожее на именованные параметры idiom.
EDIT: Альтернативный синтаксис может быть:
obj.reset(setParam1(10), setParam2(20));
или
obj.reset(setParam1(10).setParam2(20));
Я действительно не думаю, что вы можете с ним что-либо сделать. С помощью некоторой магии шаблонов, возможно, вы можете добиться подобного поведения, но с другим синтаксисом. Можете ли вы рассказать мне, зачем вам это нужно? Возможно, мы сможем найти решение с более умным дизайном. : P – Melkon
@Melkon Цель состоит в том, чтобы заставить пользователя класса установить ВСЕ требуемые параметры, не заставляя его использовать одну функцию setter с десятком аргументов. – jackhab
Ну, я точно не понимаю, в чем смысл этого синтаксиса. Я думал, что вы хотите что-то вроде 5 параметров, но обязательно указать как минимум 2 из них. На самом деле функции цепочки медленнее, и их труднее читать, по сравнению с одной функцией, которая устанавливает все параметры. Вы также можете сохранить все входные параметры в структуре и определить одну функцию, которая нуждается в этой структуре. Почему этот синтаксис важен? – Melkon