Охота на указатели

программирование C++ ссылки указатели

Суть такова:
Есть некий указатель на некий объект. Назовем его objPtr1.
Требуется создать еще один указатель, обзовем его objPtr2, который указывает туда же.
Куда конкретно - неизвестно.
Нижайше прошу помочь мне с этой маленькой проблемкой.

Примечание:
к сожалению, очевидный способ - objPtr2 = objPtr1; не канает.
не спрашивайте, почему.
компилятор хавает, но на деле творится немного не то, что надо.

Примечание:
>Куда конкретно - неизвестно.
Это не шутка, действительно неизвестно.
За более подробный ответ был бы премного благодарен.

Примечание:
Ну видите ли, скажем так, objPtr2 каким-то образом обрабатывается. Передается функциям, требующим аргумент конкретно TObj*. А не TObj**. Суть в том, чтобы обрабатывая objPtr1 в месте, в котором обработка objPtr2 недоступна (конкретный случай близок к ситуации, когда функция вызывает функцию, та вызывает.. /*рекурсия пока не надоест*/ ..функцию, в которой нужно использовать конкретный objPtr типа TObj*. А мне ой как не хочется тащить за собой в каждую из функций этот аргумент. Оочень не хочется.

Примечание:
Щас сгенерирую пример, больше похожий на правду.
Если это поможет, конкретно - я работаю с SDL, SDL_Surface - поверхность.
Значит, суть такова:

//есть некий класс
class YOBAImage
{public:
SDL_Surface *Img_src;
YOBAImage(const char* lbl, SDL_Rect take_to, SDL_Surface *Img)
{
Img_src = Img;
DrawImage(take_to,lbl,Img);
}
void DrawImage(SDL_Rect to, const char* lbl, SDL_Surface *Img)
{
...
SDL_BlitSurface(Img,NULL,screen,&to);/*вот здесь ахтунг. screen - тот самый SDL_Surface*, куда нужно все это пнуть. здесь все несколько упрощено, в реальности тащится много-много функций подряд. не хочу я им всем совать в аргументы по сути одно и то же. По другому до screen не добраться, ибо класс - в заднице, а screen - не глобал.*/
}
};

Примечание:
SDL_Surface *screen = SDL_SetVideoMode(1024, 768, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
вот так.
саму функцию SDL_SetVideoMode сейчас раскопал в исходниках SDL. Майндфак еще тот.

Примечание:
в этом вся суть.
мне нужно привязать указатель к другому так, чтобы я мог свободно изменять каждый из них. и при этом все изменения передавались второму.
Ответы:
TObj *objPtr2, *objPtr1;
objPtr1 = ....
......
objPtr2 = objPtr1;
Создаешь переменную, к примеру, x.
Создаешь указатель *objPtr1 = &x;
Создаешь еще один указатель *objPtr2 = &x. Он указывает туда же...
по Примечанию №3 - как-то больно образно.
Можете переписать это в небольшой код для демонстрации конструкции.
screen - тот самый SDL_Surface*
ссылка устанавливается присваиванием? Под отладчиком что показывает?
Она каким либо образом модифицируется?
Img_src если вней храните ссылку, то тогда действительно тащить не надо, но почему тогда используете screen переменную.
Смотрите в сторону модификации ссылки. Чудес не бывает. Если вначале A=B то если в какой-то последующий момент они не равны, значит что-то из изменило.
"SDL_Surface *screen = SDL_SetVideoMode(1024, 768, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);"


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.