ну есть условная функция parseJson(const Json::Value&, const std::string& field, double& res), где последний аргумент может иметь тиа double&, std::string&, int& и тд мне нужно, чтобы логика с типом double& в одном из файлов была другой
Боюсь, что так сделать будет нельзя.
Да, я не выспался просто, уже понял что отстойная затея
Если есть возможность изменить parseJson, то можно переписать её так, чтобы была возможность подкинуть ей в параметрах стратегии, и через них делать кастомизацию. Короче, добавить доп. точки кастомизации. Если изменить не можешь - сделать не получится
Действительно можно сделать так, спасибо
не лучше ли другую функцию написать для этого фаила?
Я так и сделал, но это же некрасиво. Для всех типов используется parseJson, а для double - parseJsonDoubleCustom
А стратегии это условно говоря флаги, которые выбирают внутри функции какую ветвь if-else выполнять, или что это?
Гугли паттерн "Стратегия"
Я буду делать через инлайнящиеся лямбды
Чтоб так сделать уже шаблоны должны быть
Их добавить не проблема
upd: не буду, тимлид не разрешил )))) :(
Просто наследование разных алгоритмов от одного интерфейса и передача полиморфной базы некоторому классу ?
Это Java style, в С++ можно изящнее сделать. Ты суть пойми
Изящнее - это передать в шаблон тип функции и инстанциировать его как член класса ? (либо инстанциировать std::function)
Да просто функцию передать - уже заебись
Круто. Теперь хочу переписать часть своего уже написанного кода, т.к раньше Java Style делал подобное
Обсуждают сегодня