Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
6 / 6 / 5
Регистрация: 22.08.2011
Сообщений: 75

Как обмануть указатель?

23.07.2013, 11:32. Показов 747. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я бы хотел сделать так, чтобы функция my_function могла менять значение value, а alien_function - нет.
Вносить изменения в код alien_function и Alien_class я не могу, поелику они написаны не мной.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
My_class
{
    Alien_class value;
}
 
Alien_class my_function(Alien_class x)
{
}
 
int main()
{
    My_class obj;
    obj.value = my_function(obj.value);
    alien_function(&obj.value);
    return 0;
}
Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.07.2013, 11:32
Ответы с готовыми решениями:

Как получить ссылку на указатель или указатель на указатель в массиве?
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если...

Как правильно удалять выделенную память под указатель на указатель?
есть код #include <iostream> #include <conio.h> #include <stdlib.h> #include <time.h> using namespace std; void sort_1(const...

Указатель на константную строку и имя массива как указатель
Изучаю C. У меня есть указатель на константную строку, и я хочу его изменить путем передачи в функцию. Это работает без проблем: ...

6
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 538
23.07.2013, 11:49
C++
1
2
3
alien_class alien_function(const Alien_class x)
{
}
не? или это считается за изменение?
1
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
23.07.2013, 11:56
Если alien_function - это некая данность, то она уже существует и независимо от чьих-либо желаний либо изменяет аргумент, либо не изменяет, и ничего с этим не поделать. Учитывая, что она принимает указатель - скорее всего изменяет. Что до my_function, то она должна принимать ссылку на переменную:
C++
1
Alien_class my_function(Alien_class& x)
или даже
C++
1
void my_function(Alien_class& x)
, если её действие сводится только к манипуляциям с изменяемым объектом и не требует создания ещё одного объекта Alien_class.

Добавлено через 3 минуты
Ну и вдогонку очевидная мысль, но на всякий случай изображу из себя капитана: если мы хотим результаты работы alien_function, но не хотим, чтобы она изменяла какой-то наш драгоценный объект, можно делать копию этого объекта (если позволяет интерфейс Alien_class) и скармливать функции:
C++
1
2
Alien_class value2(obj.value);
alien_function(&value2);
0
6 / 6 / 5
Регистрация: 22.08.2011
Сообщений: 75
23.07.2013, 12:43  [ТС]
Всем спасибо, а на верную мысль натолкнул Kukurudza
C++
1
2
3
4
5
6
7
8
9
10
11
12
void devil_function(Alien_class y)
{
    alien_function(y);
}
 
int main()
{
    My_class obj;
    obj.value = my_function(obj.value);
    devil_function(obj.value);
    return 0;
}
И пущай изменяет хоть сто раз.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
23.07.2013, 12:51
Цитата Сообщение от Voroshek Посмотреть сообщение
на верную мысль натолкнул Kukurudza
Так это по сути и есть копия объекта. При передаче по значению объект копируется.
1
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 538
23.07.2013, 12:51
а вообще странная запись:
Цитата Сообщение от Voroshek Посмотреть сообщение
C++
1
obj.value = my_function(obj.value);
вообще в таком случае у объекта должна быть функция по изменению валуе:
C++
1
2
3
4
5
6
class A {
    int value;
    void changeValue() {
        //меняю value видимо в зависимости от текущего значения value
    }
};
0
23.07.2013, 12:55

Не по теме:

Цитата Сообщение от Kukurudza Посмотреть сообщение
а вообще странная запись:
Да тут сама постановка задачи странная. Какое-то костылестроение на ровном месте, причем мотивация не особо ясна.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.07.2013, 12:55
Помогаю со студенческими работами здесь

Как обмануть игру?
Я установил игру Euro Truck Simulator 1. Но поиграть в неё можно всего лишь 1 час. После нужно приобрести ключ, который стоит 30 евро....

Как обмануть strtok_r
strtok_r отлично отрабатывает на сервере, но работать в тесте не желает. Он же не хочет работать со статикой char. я его пытался обмануть...

Как обмануть компилятор?
Приветствую, программеры! Сразу к делу. Есть 2 модуля: unit Vector3d; interface uses Vector2d; type TVector3d = packed...

Как обмануть программу?
Есть программа предоставляемая Blizzard для распознавания Системных Характеристик вашего Компьютера вот она. Возможно ли, и самое...

Как обмануть антивирус?
Привет ребят, возможно я ошибся темой если так то скажите куда мне обратиться Так вот я собираюсь идти учиться на курс компьютерной...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru