Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Omnio
0 / 0 / 1
Регистрация: 19.07.2009
Сообщений: 50
1

Передача умного указателя в функцию принимающую указатель на указатель

29.03.2017, 19:45. Просмотров 915. Ответов 1
Метки нет (Все метки)

Итак имеется функция со следующим параметром:

HRESULT __stdcall Function(SomeClass **param);

В случае, когда создаём обычный указатель:
SomeClass *pObject = NULL;

То передаём его в эту функцию таким образом:
Function(&pObject);

После чего она при успешном исходе возвращает нам в pObject, что нам надо и мы работаем с указателем дальше.


ВОПРОС: Как правильно передать в такую функцию умный указатель ?
unique_ptr<SomeClass> pObject;

1) Function(&pObject); // ERROR argument of type "std::unique_ptr<SomeClass> *" is incompatible with parameter of type "SomeClass **"
2) Function(pObject.get()); // ERROR argument of type "SomeClass *" is incompatible with parameter of type "SomeClass **"
3) Function(&pObject.get()); // ERROR expression must be an lvalue or a function designator
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2017, 19:45
Ответы с готовыми решениями:

Передача в функцию указателя на указатель
Добавление нового элемента в начало списка: void Add_Beg(List **u, Data &amp;x) //...

Передача указателя на указатель в функцию
Вопрос к знатокам: Есть абстрактный класс(Symbol) и его производный (Cross)....

Передача в функцию указателя на указатель на одномерный массив
Как изменить следующий код, чтобы в функции addValue в качестве первого...

Передать напрямую текст в функцию, принимающую указатель на адрес
Всем привет) У меня есть ф-ция которая принимает адрес строки. Я хочу передать...

Написать функцию, принимающую указатель на строку и выполняющую удаление всех букв «а» из строки
Написать функцию, принимающую указатель на строку и выполняющую удаление всех...

1
Max Dark
шКодер самоучка
1968 / 1745 / 860
Регистрация: 09.10.2013
Сообщений: 3,854
Записей в блоге: 6
Завершенные тесты: 2
29.03.2017, 20:16 2
Лучший ответ Сообщение было отмечено Omnio как решение

Решение

Цитата Сообщение от Omnio Посмотреть сообщение
ВОПРОС: Как правильно передать в такую функцию умный указатель ?
Только используя временную переменную.
C++
1
2
3
4
5
6
7
std::unique_ptr<SomeClass> pObject;
SomeClass *tmp = NULL;
 
auto ret = Function(&tmp);
if(is_good(ret)) {
    pObject.reset(tmp);
}
При этом нужно учитывать, что раз есть специальная функция создания, то возможно нужно вызывать специальную функцию удаления
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2017, 20:16

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив)
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось...

Зачем передавать в функцию X указатель на callback функцию, если последняя ВНЕШНЯЯ и вызовется БЕЗО ВСЯКОГО УКАЗАТЕЛЯ?
Собсно. То есть ребята, вот пример отсюда:...

разница между указатель на функцию и функция возврата указателя?
подскажите пожалуйста очень срочно надо (вопрос на зачет)


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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