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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Helldrg
54 / 54 / 1
Регистрация: 10.01.2011
Сообщений: 1,093
#1

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

14.07.2015, 07:40. Просмотров 318. Ответов 6
Метки нет (Все метки)

Здравствуйте! Надеюсь я правильно сформулировал вопрос, хотелось бы узнать как такое реализовать:

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
1354 / 984 / 215
Регистрация: 31.05.2009
Сообщений: 4,110
14.07.2015, 08:03     Как передать адрес объекта через функцию #2
Через временную переменную
C++
1
2
ID3D11Buffer* temp = GetObj();
Fun(&temp);
Helldrg
54 / 54 / 1
Регистрация: 10.01.2011
Сообщений: 1,093
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++
Как передать массив в функцию? C++
Можно ли передать в функцию две переменных через 1 какую-нибудь конструкцию? C++

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

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

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

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