Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
#1

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

29.11.2011, 16:52. Просмотров 604. Ответов 2
Метки нет (Все метки)

Например:
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; // ошибка при компиляции.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2011, 16:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Можно ли использовать явное приведение типов для данных со спецификатором const? (C++):

Явное преобразование типов данных(объясните разницу)! - C++
В чём разница между этим: cout &lt;&lt; &quot;float(int_value15) / int_value2 = &quot; &lt;&lt; float(int_value15) / int_value2 &lt;&lt; endl &lt;&lt; &quot;15 /...

Найти предельные значения для целочисленных типов. Не использовать заранее определенные константы границ типов. - C++
Буду благодарен! Найти предельные значения для целочисленных типов. Не использовать заранее определенные константы границ типов.

Несовместимость типов данных: Error:invalid conversion from 'int' to 'const char*' - C++
Код для ардуинки. #include &lt;VirtualWire.h&gt; const int led_pin = 13; const int transmit_pin = 12; void setup() { ...

Перегрузить приведение типов для шаблонного класса - C++
Хай. Имеется template &lt;class T&gt; class fraction { public: T top; T bot;

Явное преобразование типов - C++
class CLSObj { void abc(int d){ ... } ... }; int main() { char *p; CLSObj obj;

static_cast и явное преобразование типов - C++
Зачем нужен статик_каст, если можно явно преобразовывать типы?

2
Сыроежка
Заблокирован
29.11.2011, 17:21 #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;
1
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.11.2011, 18:06  [ТС] #3
Благодарю!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2011, 18:06
Привет! Вот еще темы с ответами:

Явное преобразование типов в UST - C++
Задание - реализовать универсальный скалярный тип (аля any/variant из буста). Я его написал, однако преобразование типов в моем коде...

Деления двух чисел используя явное преобразование типов - C++
Помогите кто может подкорректировать данную программу условие следующее &quot;Деления двух чисел используя явное преобразование типов&quot; Написал...

Создать класс, содержащий поля, которые можно использовать для хранения данных - C++
Создать класс &lt;имя класса&gt; (имя класса задается в соответствии с выбранным вариантом), содержащий поля, которые можно использовать для...

Пишем исключения для каждого типа данных, или можно использовать шаблон? - C++
Всем доброго дня. В классе &quot;очередь&quot; я использую шаблон класса и если пользователь захочет допустим ввести не тип int а тип double то мне...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru