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

Как передать адрес объекта через функцию - C++

Восстановить пароль Регистрация
 
Helldrg
54 / 54 / 1
Регистрация: 10.01.2011
Сообщений: 1,080
14.07.2015, 07:40     Как передать адрес объекта через функцию #1
Здравствуйте! Надеюсь я правильно сформулировал вопрос, хотелось бы узнать как такое реализовать:

C++
1
2
3
4
5
6
7
8
9
10
//Есть функция с таким типом параметра ID3D11Buffer* const* ppObjectName
// Если писать так, то работает
Fun(&obj);
// А если писать так, то не не работает
Fun(&GetObj());
....
ID3D11Buffer* GetObj()
{
  return obj;
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Black Fregat
 Аватар для Black Fregat
1353 / 983 / 215
Регистрация: 31.05.2009
Сообщений: 4,093
14.07.2015, 08:03     Как передать адрес объекта через функцию #2
Через временную переменную
C++
1
2
ID3D11Buffer* temp = GetObj();
Fun(&temp);
Helldrg
54 / 54 / 1
Регистрация: 10.01.2011
Сообщений: 1,080
14.07.2015, 08:09  [ТС]     Как передать адрес объекта через функцию #3
Black Fregat
А через функцию, которая возвращает указатель на объект, нельзя?
Pancir
 Аватар для Pancir
57 / 44 / 10
Регистрация: 16.09.2014
Сообщений: 124
14.07.2015, 08:26     Как передать адрес объекта через функцию #4
C++
1
Fun(GetObj());
mporro
256 / 102 / 14
Регистрация: 04.07.2014
Сообщений: 571
14.07.2015, 08:59     Как передать адрес объекта через функцию #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Helldrg, дело в том, что функция GetObj() возвращает Вам временный объект ID3D11Buffer*, который будет уничтожен при завершении работы функции. Компилятор разумно ограничивает возможные действия над таким объектом. В частности, брать от такого объекта адрес бессмысленно, потому что практически моментально указатель окажется висячим. Фактически, всё, что Вы можете сделать с объектом, который возвращает функция -- скопировать во внешний по отношению к функции контекст. В данном случае -- скопировать указатель ID3D11Buffer*. И уже от копии, которая будет жить долго, Вы можете взять адрес.
Pancir
 Аватар для Pancir
57 / 44 / 10
Регистрация: 16.09.2014
Сообщений: 124
14.07.2015, 09:13     Как передать адрес объекта через функцию #6
Блин, сори мой ответ не верный, я не заметил, что в комментарии дан тип аргумента и решил с играть в Вангу и проиграл )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2015, 09:14     Как передать адрес объекта через функцию
Еще ссылки по теме:

C++ Как получить полный адрес по имени поля объекта класса
C++ Как передать указатель на функцию через метод класса ?
C++ Не получается адрес динамического двумерного массива передать, как аргумент функции

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

Или воспользуйтесь поиском по форуму:
Helldrg
54 / 54 / 1
Регистрация: 10.01.2011
Сообщений: 1,080
14.07.2015, 09:14  [ТС]     Как передать адрес объекта через функцию #7
mporro
Ваууу, доступно объяснили, спасибо!!!

Добавлено через 25 секунд
Pancir
бывает =)
Yandex
Объявления
14.07.2015, 09:14     Как передать адрес объекта через функцию
Ответ Создать тему
Опции темы

Текущее время: 09:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru