Форум программистов, компьютерный форум CyberForum.ru

Можно ли использовать явное приведение типов для данных со спецификатором const? - C++

Восстановить пароль Регистрация
 
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.11.2011, 16:52     Можно ли использовать явное приведение типов для данных со спецификатором const? #1
Например:
C++
1
2
3
4
5
6
int n;
const int* ukn = &n;
int s;
int* uks = &s;
const_cast< int* >( ukn ); // или (int*) ukn;
*ukn = *uks; // ошибка при компиляции.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2011, 16:52     Можно ли использовать явное приведение типов для данных со спецификатором const?
Посмотрите здесь:

Деления двух чисел используя явное преобразование типов C++
C++ Найти предельные значения для целочисленных типов. Не использовать заранее определенные константы границ типов.
C++ Явное приведение "void*"
Создать класс, содержащий поля, которые можно использовать для хранения данных C++
C++ Явное преобразование типов
static_cast и явное преобразование типов C++
Пишем исключения для каждого типа данных, или можно использовать шаблон? C++
Несовместимость типов данных: Error:invalid conversion from 'int' to 'const char*' C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
29.11.2011, 17:21     Можно ли использовать явное приведение типов для данных со спецификатором const? #2
Цитата Сообщение от alsav22 Посмотреть сообщение
Например:
C++
1
2
3
4
5
6
int n;
const int* ukn = &n;
int s;
int* uks = &s;
const_cast< int* >( ukn ); // или (int*) ukn;
*ukn = *uks; // ошибка при компиляции.
Дело в том, что у вас два этих предложения

C++
1
2
const_cast< int* >( ukn ); // или (int*) ukn;
*ukn = *uks; // ошибка при компиляции.
не связаны между собой.
В первом предложении вы получаете временный объект, неконстакнтный указатель, который сразу же удаляется по достижению точки с запятой. С самим указателем ukn при этом ничего не происходит.
Во втором предложении вы пытаетесь изменить значение через константный указатель, и, естественно, вам выдается сообщение об ошибке.

Добавлено через 10 минут
alsav22,

То, чего вы хотите добиться, реализуется следующим образом

C++
1
*const_cast<int *>( ukn ) = *uks;
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.11.2011, 18:06  [ТС]     Можно ли использовать явное приведение типов для данных со спецификатором const? #3
Благодарю!
Yandex
Объявления
29.11.2011, 18:06     Можно ли использовать явное приведение типов для данных со спецификатором const?
Ответ Создать тему
Опции темы

Текущее время: 18:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru