crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Указатель на указатель неизвестного типа
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Алексей1153 Дата 18.3.2011, 2:10
  Rocky, вообще-то она написала диаметрально противоположно, а в моей фразе не нужно имя типа и не нужно разыменование
Rocky Дата 17.3.2011, 12:01
  Алексей1153, опять вырываешь слова из контекста. Разве Iron Bug это не написала?

Цитата(Iron Bug @ 16.3.2011, 21:20) *
без разницы, как она это возвращает, но если изначально есть указатель на указатель, а потом нужно разыменование этого указателя, то всё равно потребуется хотя бы имя типа TYPE. ибо *void - некорректное выражение.
Алексей1153 Дата 17.3.2011, 10:52
  Iron Bug,
Цитата(Iron Bug @ 16.3.2011, 23:20) *
то всё равно потребуется хотя бы имя типа TYPE. ибо *void - некорректное выражение.

не потребуется в том случае, если самому разыменовывать не нужно, а лишь нужно предоставить контекст в очередную функцию объекта
Iron Bug Дата 16.3.2011, 23:12
 
Цитата(Disaron @ 16.3.2011, 23:30) *
заголовочников, как и у ТС нету и тип CR_INIT недокументирован.

создатель библиотеки всегда поставляет заголовочники или описания типов. иначе вся библиотека просто бесполезна.
по идее, должно быть описание структуры, либо заголовочник.
ну, можно попробовать void*, если нигде не требуется приведение типов или явная инициализация этой структуры.
что-то типа:

void * ptr;
cr_init(tm_flag,init_mode,&ptr);


и потом уже ptr проставлять в вызовах других функций.
Disaron Дата 16.3.2011, 21:30
  Блин. Увидел пост и вспомнил аналогичную тему.
Имеем в dll С-шную функцию:
int DECL cr_init(int tm_flag,
                int *init_mode,
                CR_INIT **init_struct);


Предполагаю написать C++ обертку для нескольких функций из этой либы для использования в Qt проекте.
Согласно документации
Цитата
init_struct возвращаемый указатель на созданный контекст, используемый другими функциями библиотеки.

Для подключения библиотеки буду использовать QLibrary, потому как заголовочников, как и у ТС нету и тип CR_INIT недокументирован.

И вот тут у меня наступает фундаментальный ступор - какой и почему тип надо использовать для подстановки в init_struct? Чувчтвую что что-то где-то не дочитал и теперь страдаю :(
Огромное спасибо тому, кто минимально разжует что мне делать.
Iron Bug Дата 16.3.2011, 21:20
  без разницы, как она это возвращает, но если изначально есть указатель на указатель, а потом нужно разыменование этого указателя, то всё равно потребуется хотя бы имя типа TYPE. ибо *void - некорректное выражение.
Pahen Дата 16.3.2011, 14:38
 
Цитата(Алексей1153 @ 16.3.2011, 13:42) *
можно void* использовать

только непонятно, как так: функция возвращает TYPE **var , а потом надо передавать TYPE *var ? Разве что только через аргумент возвращает - тогда всё встаёт на свои места ))
Да да, прошу прощения, через аргумент. Так она возвращает int как код ошибки. :) А указатель на структуру - через аргумент.
Алексей1153 Дата 16.3.2011, 13:42
  можно void* использовать

только непонятно, как так: функция возвращает TYPE **var , а потом надо передавать TYPE *var ? Разве что только через аргумент возвращает - тогда всё встаёт на свои места ))
Pahen Дата 16.3.2011, 12:10
  Сложно сформулировать, но:

Существует dll, С - функция которой возвращает TYPE **var, *var потом необходим для использования других функций данной библиотеки. Структура TYPE неизвестна, заголовочников нет. Какой тип можно использовать, чтобы хранить это значение в программе? void*?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 23:51