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

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

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

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

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

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

C++
1
2
3
4
5
6
7
8
9
10
//Есть функция с таким типом параметра ID3D11Buffer* const* ppObjectName
// Если писать так, то работает
Fun(&obj);
// А если писать так, то не не работает
Fun(&GetObj());
....
ID3D11Buffer* GetObj()
{
  return obj;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2015, 07:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как передать адрес объекта через функцию (C++):

Функция возвращает адрес , как передать этот адрес другой функции ? - C++
const int max = 5; double * fill_array(double, int); void show_array(const double, double *); // как передать этой функции в...

Как передать указатель на функцию через метод класса ? - C++
typedef void (*FuncCallback)(float* flValue); Пробовал по всякому и ни как: Class.CallFunc // error C3867: CClass::CallFunc :...

Доступ к приватному полю через адрес экземпляра объекта - C++
Объясните такой момент class A { private: char s; public: char Get(){ return s; }

Адрес объекта, адрес указателя. Где что находится? - C++
#include <iostream> void Foo(int* val) { std::cout << val << " " << *val << " " << &val << '\n'; } void Bar(int* &val) ...

Как правильно вызывать функцию объекта из другой функции того же объекта? - C++
Доброго дня и ночи, уважаемые программисты! Существует некоторая проблема, на которую я наткнулся, решая задачу по программированию из...

Не могу разобраться как передать корректно передать массив из функции в функцию - C++
//--------------------------------------------------------------------------- #pragma hdrstop ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Black Fregat
1381 / 1011 / 222
Регистрация: 31.05.2009
Сообщений: 4,240
14.07.2015, 08:03 #2
Через временную переменную
C++
1
2
ID3D11Buffer* temp = GetObj();
Fun(&temp);
1
Helldrg
-15 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,107
14.07.2015, 08:09  [ТС] #3
Black Fregat
А через функцию, которая возвращает указатель на объект, нельзя?
0
Pancir
57 / 44 / 10
Регистрация: 16.09.2014
Сообщений: 124
14.07.2015, 08:26 #4
C++
1
Fun(GetObj());
0
mporro
256 / 102 / 14
Регистрация: 04.07.2014
Сообщений: 571
14.07.2015, 08:59 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Helldrg, дело в том, что функция GetObj() возвращает Вам временный объект ID3D11Buffer*, который будет уничтожен при завершении работы функции. Компилятор разумно ограничивает возможные действия над таким объектом. В частности, брать от такого объекта адрес бессмысленно, потому что практически моментально указатель окажется висячим. Фактически, всё, что Вы можете сделать с объектом, который возвращает функция -- скопировать во внешний по отношению к функции контекст. В данном случае -- скопировать указатель ID3D11Buffer*. И уже от копии, которая будет жить долго, Вы можете взять адрес.
0
Pancir
57 / 44 / 10
Регистрация: 16.09.2014
Сообщений: 124
14.07.2015, 09:13 #6
Блин, сори мой ответ не верный, я не заметил, что в комментарии дан тип аргумента и решил с играть в Вангу и проиграл )
0
Helldrg
-15 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,107
14.07.2015, 09:14  [ТС] #7
mporro
Ваууу, доступно объяснили, спасибо!!!

Добавлено через 25 секунд
Pancir
бывает =)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2015, 09:14
Привет! Вот еще темы с ответами:

Передать строку через функцию. - C++
#pragma once class User { private: char *Surname; public: User(void); char SurnameReturn(); }

Как получить полный адрес по имени поля объекта класса - C++
как получить полный адрес по имени поля объекта класса ? не пересчитывая размер расположенных до него полей от начала объекта

Не получается адрес динамического двумерного массива передать, как аргумент функции - C++
/* Лабораторная работа №3 Во всех вариантах необходимо написать три функции, которые будут вызываться из функции main(). Первая...

Можно ли передать в функцию две переменных через 1 какую-нибудь конструкцию? - C++
Можно ли передать в функцию две переменных через 1 конструкцию чтобы вместо этого int a=5; int b=10; Func (a,b); ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.07.2015, 09:14
Ответ Создать тему
Опции темы

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