Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.17.45] |
|
Сообщ.
#1
,
|
|
|
Пусть есть int i=2. Что-то с ним сделали - и теперь его нужно заморозить. При этом это глобальная переменная, просто записать ее в локальную в ф-ции не получится.
Какие есть способы присваивать и устранять const у переменных? |
Сообщ.
#2
,
|
|
|
хм, и что-то должно произойти, если кто-то захочет изменить значение этой переменной, когда у неё будет "флаг" const? исключение?
для обхода const есть mutable, но это кагбэ не совсем то. проще всего завести флаг аля bool is_mutable_now который менять под мутексом |
Сообщ.
#3
,
|
|
|
Цитата _lcf_ @ Не исключение. Сначала программе требуется 1 конст. Спустя время она изменяет его, корректно, ей это необходимо - и надо заморозить его снова. А вообще конст можно изменить через указатель? Просто в адрес записать что требуется путем CopyMemory или чем-то в таком духе. |
Сообщ.
#4
,
|
|
|
что-то ты странного хочешь, можно так:
int i = 4; // Non-const object. const int* p = &i; // const pointer. *const_cast<int*>(p) = 5; // Legal. https://softwareengineering.stackexchange.c...table-and-const |
Сообщ.
#5
,
|
|
|
Цитата _lcf_ @ что-то ты странного хочешь, можно так: Можно окружить переменную классом. Перегрузить "=", добавить методы "Lock" и "UnLock" итп. --- Только непонятно, чем не правильное использование метода "=", отличается от не правильного использования методов Lock/UnLock ? --- Можно попытаться использовать "VirtualProtectEx" для разрешения/запрещения записи в память. |