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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ [C++] Замена отрицательных элементов их модулями http://www.cyberforum.ru/cpp-beginners/thread394763.html
Здравствуйте, программисты:) прошу вас помощь с программой. Разработать программу, написав предварительно подпрограмму. Задание на разработку подпрограммы сформулировано в первом абзаце...
C++ наследование в чём ошибка (посмотрите рисунок) #include <iostream> #include "stdlib.h" #include <string> using namespace std; char marki_mahsin={"1","2","3","4","5","6","7"};... http://www.cyberforum.ru/cpp-beginners/thread394762.html
Разделение данных C++
есть файл с непрерывным текстом вида ...04.01.2006;119.48;121.56;119.36;121.4605.01.2006;121.41;122.72;121.4;122.5... формат: дата;данные;данные;данные;данные между последним элементом данных и...
Получить все 6-значные счастливые числа C++
Написать задачу с использованием указателей. Получить все 6-значные счастливые числа, т.е. те, у которых сумма первых трех цифр равна сумме последних трех.
C++ Элементы расположенные по периметру матрицы. http://www.cyberforum.ru/cpp-beginners/thread394748.html
подскажите,как составить цикл для нахождения элементов по периметру через for.с++
C++ Упрощение кода Хочу написать многофункциональную консольную программу. Код получится громоздкий и запутанный. C++ позволяет как-нибудь обозначать действия, а потом отдельно их описывать? Например, если я выбрал... подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
29.11.2011, 17:21
Цитата Сообщение от 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
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru