Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Есть ли такой оператор: 
:(
    Опции темы
azesmcar
Дата 15.4.2009, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата

тогда уж зачем эта инкапсуляция, айда делать все методы открытыми, а если юзер неуследит и чето не так вызовет, то сам дурак smile 

Ну по моему это немного другой вопрос нежели инкапсуляция. Пользователь должен писать в соответствии со стандартом С++, уберечь его от всех возможных ошибок все равно нельзя. Это не проблема того кто пишел либу, а проблема пользователя который не знает что С++ не гарантирует очередность вычисления аргументов функции. smile

Добавлено через 18 секунд
хотя если можно его уберечь - конечно желательно.
PM   Вверх
HappyLife
Дата 15.4.2009, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: 3
Всего: 8



Цитата(mes @  15.4.2009,  10:19 Найти цитируемый пост)
a зачем такое понадобилось ? если не секрет.  smile  

Тут нет никакого секрета.
Я произвожу рефакторинг кода.
Когда-то, некая функция имела следующий вид

void f(string str, int t = 0);

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

void f(string str,bool Needed, int t = 0);

Соответственно нужно провести анализ всего немалого кода, чтобы ввести новшество. Но дабы избежать человеческого фактора, из-за которого можно что-то не доглядеть, было прекрасно, чтобы компилятор в таком месте ругнулся.

f("строка",10);


Это сообщение отредактировал(а) HappyLife - 15.4.2009, 11:53
PM MAIL   Вверх
azesmcar
Дата 15.4.2009, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



HappyLife
ну тогда тут два решения вашей проблемы
wrapper который я написал и написанный Ivanovich -ом вариант.

Добавлено через 33 секунды
я так понимаю это временно нужно, пока весь код не исправите?
PM   Вверх
mes
Дата 15.4.2009, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(HappyLife @  15.4.2009,  10:51 Найти цитируемый пост)
К большому бы счастью, было бы прекрасно, если бы в таком месте компилятор ругнулся.

а ну тогда перегрузка неопределенной шаблонной функции должна подойти и добавить можно не меняя код, и убрать когда станет не нужна.
А еще один вариант, просто  переименовать функцию и всплывут все ее вызовы. smile


--------------------
PM MAIL WWW   Вверх
Ivanovich
Дата 15.4.2009, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 31.3.2009

Репутация: нет
Всего: нет



В старом коде могут быть вызовы типа f("строка", true);  или f("строка", i > 4); с неявным преобразованием bool в int, которые сойдут за новый код.
Такие вопросы решаются переименованием функции - если стали другие аргументы, значит должна быть другая функция.
PM MAIL   Вверх
Alek86
Дата 15.4.2009, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Цитата(mes @  15.4.2009,  11:54 Найти цитируемый пост)
А еще один вариант, просто  переименовать функцию и всплывут все ее вызовы.

а если есть чуть менее подходящая перегруженная?


--------------------
user posted image    user posted image
PM MAIL   Вверх
HappyLife
Дата 15.4.2009, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: 3
Всего: 8



Alek86, очень грамотный вопрос, касающейся всецело тронутой темы рефакторинга.

Это сообщение отредактировал(а) HappyLife - 15.4.2009, 15:15
PM MAIL   Вверх
Alek86
Дата 15.4.2009, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



думаю, проще будет поглядеть на вызовы всех функций с таким названием
к примеру, тупым поиском

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


--------------------
user posted image    user posted image
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0676 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.