| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > как обойти const? |
| Автор: KQT 1.11.2007, 07:13 | ||
Есть функция
На вторую строку выдает invalid conversion from `const List<int>*' to `List<int>*'. Как это можно обойти и получить указатель по константной ссылке? |
| Автор: archimed7592 1.11.2007, 07:37 | ||
Добавлено через 3 минуты и 4 секунды Только учти, что несмотря на то, что ты получил после этого неконстантный объект и, несмотря на то, что при попытке изменить такой объект(к примеру lcur->clear() ) компилятор не ругнётся на такую попытку, делать этого ты не имеешь права! После применения const_cast ты должен сам следить за соблюдением константности этого объекта. |
| Автор: chipset 1.11.2007, 08:18 |
| И программа видимо работать будет очень, очень непредсказуемо. Обычно указатели расходятся по всему проекту (на то они и указатели) и поэтому добавление строки в одном модуле может по***ить тебе всю малину в другом. В общем если просто для исследовательских целей, юзай. А в команде такое писать нельзя. |
| Автор: archimed7592 1.11.2007, 08:48 |
| chipset, такое можно писать, к примеру, когда уже есть код, который берёт некостантный указатель/ссылку, но в реальности не меняет сам объект(и ты это доподлинно знаешь) - к примеру как с win32api... Тогда можно без каких-либо угрызений совести сделать const_cast. Если же ты не уверен в этом(или вообще сам собираешься изменять объект), то только делать копию. |
| Автор: KQT 1.11.2007, 16:56 |
| исчерпавающе. Спасибо! |