![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Ну по моему это немного другой вопрос нежели инкапсуляция. Пользователь должен писать в соответствии со стандартом С++, уберечь его от всех возможных ошибок все равно нельзя. Это не проблема того кто пишел либу, а проблема пользователя который не знает что С++ не гарантирует очередность вычисления аргументов функции. ![]() Добавлено через 18 секунд хотя если можно его уберечь - конечно желательно. |
|||
|
||||
HappyLife |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 3 Всего: 8 |
Тут нет никакого секрета. Я произвожу рефакторинг кода. Когда-то, некая функция имела следующий вид void f(string str, int t = 0); Ввиду требуемого совершенствования, встала необходимость ввести обязательный дополнительный параметр. Так как параметр, обязательный нужно его вводить перед теми, кто имеет значения по-умолчанию, то есть так void f(string str,bool Needed, int t = 0); Соответственно нужно провести анализ всего немалого кода, чтобы ввести новшество. Но дабы избежать человеческого фактора, из-за которого можно что-то не доглядеть, было прекрасно, чтобы компилятор в таком месте ругнулся. f("строка",10); Это сообщение отредактировал(а) HappyLife - 15.4.2009, 11:53 |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
HappyLife
ну тогда тут два решения вашей проблемы wrapper который я написал и написанный Ivanovich -ом вариант. Добавлено через 33 секунды я так понимаю это временно нужно, пока весь код не исправите? |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
а ну тогда перегрузка неопределенной шаблонной функции должна подойти и добавить можно не меняя код, и убрать когда станет не нужна. А еще один вариант, просто переименовать функцию и всплывут все ее вызовы. ![]() |
|||
|
||||
Ivanovich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 31.3.2009 Репутация: нет Всего: нет |
В старом коде могут быть вызовы типа f("строка", true); или f("строка", i > 4); с неявным преобразованием bool в int, которые сойдут за новый код.
Такие вопросы решаются переименованием функции - если стали другие аргументы, значит должна быть другая функция. |
|||
|
||||
Alek86 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
||||
|
||||
HappyLife |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 3 Всего: 8 |
Alek86, очень грамотный вопрос, касающейся всецело тронутой темы рефакторинга.
Это сообщение отредактировал(а) HappyLife - 15.4.2009, 15:15 |
|||
|
||||
Alek86 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
думаю, проще будет поглядеть на вызовы всех функций с таким названием
к примеру, тупым поиском потому поменять имя, поменять те из вызовов, что кидают ошибки, а остальные - что не кидают - разрулить вручную. чето у меня ощущение, что таких вызовов будет не много |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |