0 / 0 / 0
Регистрация: 04.09.2012
Сообщений: 14
|
|
1 | |
Возврат указателя на константу из подпрограммы?04.09.2012, 17:27. Показов 1792. Ответов 13
Метки нет Все метки)
(
0
|
|
04.09.2012, 17:27 | |
Ответы с готовыми решениями:
13
Возврат массива строк в константу через лямбду Возврат указателя Возврат указателя из функции |
04.09.2012, 18:07 | 2 | |||||
Как вариант:
0
|
0 / 0 / 0
Регистрация: 04.09.2012
Сообщений: 14
|
|
04.09.2012, 18:56 [ТС] | 3 |
Это не вариант
![]()
0
|
04.09.2012, 22:20 | 4 |
Ну тогда, боюсь без вариантов. Для константы даже не применить оператор @ - только для переменных, процедур/функций.
0
|
0 / 0 / 0
Регистрация: 04.09.2012
Сообщений: 14
|
|
05.09.2012, 16:56 [ТС] | 5 |
Пичалька...
0
|
05.09.2012, 18:10 | 6 |
Как вообще поставлена задача? Может ее получится по-другому реализовать.
0
|
0 / 0 / 0
Регистрация: 04.09.2012
Сообщений: 14
|
|
05.09.2012, 18:55 [ТС] | 7 |
Да, конечно, можно реализовать по-другому. Хотелось красиво сделать.
Суть в том, что есть данные, которые для чтения можно раздавать всем, а вот изменять их хотелось строго через интерфейс определенного класса. Копировать эти данные получается довольно дорого.
0
|
05.09.2012, 19:14 | 8 |
Не пойму, причем тут указатель на константу? Ведь сеттеры/геттеры никто не отменял.
0
|
0 / 0 / 0
Регистрация: 04.09.2012
Сообщений: 14
|
|
05.09.2012, 19:26 [ТС] | 9 |
Ну, хорошо. Я верну ссылку или указатель (это не важно) на данные. Я же могу их (умышлено или нечаяно) изменить произвольным образом в дальнейшем. А это не желательно. Изменять эти данные можно только через интерфейс определенного класса, там выполняется проверка.
Или я чего-то не догоняю в Турбо Паскале? Может конечно такое быть, для меня TP в новинку.
0
|
05.09.2012, 19:46 | 10 |
Лучше вернуть копию.
Добавлено через 9 минут Даже если вы вернете указатель/ссылку вы сможете изменить данные.
0
|
0 / 0 / 0
Регистрация: 04.09.2012
Сообщений: 14
|
||||||
05.09.2012, 20:06 [ТС] | 11 | |||||
Ну да. Это понятно.
Возвращать копию довольно дорого, обращения выполняются из разных процедур и не редко. Мне нужно было нечто подобное.
0
|
05.09.2012, 20:13 | 12 | |||||
Если вам ну очень дорого все время возвращать копию данных. Тогда попробуйте сделать следующий трюк. Для объектного типа определите копию данных. Одну. Вроде такого:
1
|
0 / 0 / 0
Регистрация: 04.09.2012
Сообщений: 14
|
|
05.09.2012, 20:26 [ТС] | 13 |
Где их испортят не важно. Важно, что в дальнейшем они будут уже не корректны и это не проверить в подпрограммах, использующих эти данные. Просто результат будет не верный.
В общем все понятно. Интересно, в Delphi такая же ситуация?
0
|
05.09.2012, 20:36 | 14 |
Да язык неважен. Работа с указателями есть работа с указателями. И тут никакой сишный const не спасет, если кто-то ковырять будет. Если вам так важно сохранить ваши данные в целостности, тогда еще кое-то могу предложить: заведите метод доступа по индексу, возвращающий копию одного числа. В таком случае изменить сами данные не получится, а читать можно будет не сложнее обхода массива.
0
|
05.09.2012, 20:36 | |
05.09.2012, 20:36 | |
Помогаю со студенческими работами здесь
14
JNI, передача и возврат указателя Возврат указателя на массив указателей
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |