Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2012, 20:23   #1
Decoy2k
 
Регистрация: 02.02.2012
Сообщений: 9
По умолчанию С++ Преобразование const Char в const GUID

День добрый, уважаемые!
В процессе написания программки столкнулся со следующей бякой...

Работаю с функцией SetupDiGetClassDevs, пытаюсь передать в функцию следующие параметры:
Код:
SetupDiGetClassDevs("4D36E972-E325-11CE-BFC1-08002BE10318", 0, 0, DIGCF_PRESENT /*or DIGCF_PROFILE*/);
Собственно первый параметр не передаётся, дабы, как мне подсказывает компилятор:
Цитата:
SetupDiGetClassDevsW: невозможно преобразовать параметр 1 из 'const char [37]' в 'const GUID *'
Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
Начал разбираться с reinterpret_cast, попробовал написать так:
Код:
SetupDiGetClassDevs(reinterpret_cast<const GUID>("4D36E972-E325-11CE-BFC1-08002BE10318"), 0, 0, DIGCF_PRESENT /*or DIGCF_PROFILE*/);
Компилятору это опять не понравилось.
Цитата:
reinterpret_cast: невозможно преобразовать 'const char [37]' в 'const GUID' Для преобразования требуется конструктор или оператор пользовательского преобразования, который не может использоваться const_cast или reinterpret_cast
Чего делать посоветуете? Только попрошу по-понятней подсказать, а лучше показать Языком не владею, пишу только 2-ю неделю на нем от силы.
Decoy2k вне форума Ответить с цитированием
Старый 04.02.2012, 20:34   #2
crymchanin
Пользователь
 
Аватар для crymchanin
 
Регистрация: 01.02.2012
Сообщений: 84
По умолчанию

Код:
typedef struct _GUID {
    unsigned long  Data1;
    unsigned short Data2;
    unsigned short Data3;
    unsigned char  Data4[ 8 ];
} GUID;
Просто это не строка, а структура.
crymchanin вне форума Ответить с цитированием
Старый 04.02.2012, 20:36   #3
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

В первом случае компилятор вам сообщает:
SetupDiGetClassDevsW: невозможно преобразовать параметр 1 из 'const char [37]' в 'const GUID *'

Но вы же такой продвинутый, что вам наплевать на сообщения компилятора, а потому вы все равно делаете по-своему и пишите

reinterpret_cast<const GUID>

Компилятор очень добрый и терпеливвый в отличии от меня, поэтому он вам снова говорит

reinterpret_cast: невозможно преобразовать 'const char [37]' в 'const GUID'

Из первого сообщения компилятора достаточно ясно ( для тех, кто голову имеет на плечах, а не что-то другое), что первым параметром функции является указатель на константный объект GUID, то есть const GUID *.

Как вам еще должен объяснить компилятор, что требуется?!!!
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Старый 04.02.2012, 20:49   #4
Decoy2k
 
Регистрация: 02.02.2012
Сообщений: 9
По умолчанию

Цитата:
Сообщение от crymchanin Посмотреть сообщение
Код:
typedef struct _GUID {
    unsigned long  Data1;
    unsigned short Data2;
    unsigned short Data3;
    unsigned char  Data4[ 8 ];
} GUID;
Просто это не строка, а структура.
Огромное спасибо, как раз сидел и пытался слепить структуру... искал-искал табличку где сведены типы данных delphi и аналогичные им c++ (ну или наоборот, как кому угодно). Вчера натыкался, а сейчас не могу найти.
Decoy2k вне форума Ответить с цитированием
Старый 04.02.2012, 20:54   #5
crymchanin
Пользователь
 
Аватар для crymchanin
 
Регистрация: 01.02.2012
Сообщений: 84
По умолчанию

Незачто. Спасибо интернету за то, что в нем можно все найти и спросить. Мне раньше при отсутствии последнего пришлось поломать голову над некоторыми аспектами языка (я как-бы самоучка, это мое хобби).
crymchanin вне форума Ответить с цитированием
Старый 04.02.2012, 20:54   #6
Decoy2k
 
Регистрация: 02.02.2012
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Сыроежка Посмотреть сообщение
В первом случае компилятор вам сообщает:
SetupDiGetClassDevsW: невозможно преобразовать параметр 1 из 'const char [37]' в 'const GUID *'

Но вы же такой продвинутый, что вам наплевать на сообщения компилятора, а потому вы все равно делаете по-своему и пишите

reinterpret_cast<const GUID>

Компилятор очень добрый и терпеливвый в отличии от меня, поэтому он вам снова говорит

reinterpret_cast: невозможно преобразовать 'const char [37]' в 'const GUID'

Из первого сообщения компилятора достаточно ясно ( для тех, кто голову имеет на плечах, а не что-то другое), что первым параметром функции является указатель на константный объект GUID, то есть const GUID *.

Как вам еще должен объяснить компилятор, что требуется?!!!
А вам, уважаемый, следует быть спокойней и не переходить на личности. Мне показалось в первый раз, что компилятор посоветовал воспользоваться reinterpret_cast. Ещё раз повторюсь, что на C++ пишу относительно недавно, всё приходит с опытом.
Decoy2k вне форума Ответить с цитированием
Старый 04.02.2012, 20:55   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Огромное спасибо, как раз сидел и пытался слепить структуру... искал-искал табличку где сведены типы данных delphi и аналогичные им c++ (ну или наоборот, как кому угодно).
а на MSDN было не посмотреть?
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.02.2012, 23:21   #8
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,120
По умолчанию

Decoy2k

SetupDiGetClassDevsW: невозможно преобразовать параметр 1 из 'const char [37]' в 'const GUID *'

RTFM CLSIDFromString
Rififi вне форума Ответить с цитированием
Старый 05.02.2012, 03:18   #9
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от Decoy2k Посмотреть сообщение
А вам, уважаемый, следует быть спокойней и не переходить на личности. Мне показалось в первый раз, что компилятор посоветовал воспользоваться reinterpret_cast. Ещё раз повторюсь, что на C++ пишу относительно недавно, всё приходит с опытом.
Я лично не знаю, как еще таким, ка вы, надо объяснять?! Вам компилячтор ясно сказал. что требуется указатель. Вы понимаете, что такое указатель?! Сколько вам раз нужно это повторять? А вы вместо указателя пытаетесь снова реинтерпретировать в некий тип.
Для кого компилятор пищет сообщения об ошибках?!!! Вы их аообще читаете? Или вам фиолетово, что вам компилятор сообщает? Может быть следовало потратоить одну минуту на вдумчивое прочтение того, что вам сообщает компилятор, вместо того, чтобы отвлекать других?!!! И почему бы вам сначала прежде, чем использовать функцию, не почитать о ее параметрах? Или вы, как баран, будете лбом биться о стену?
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Старый 07.02.2012, 14:02   #10
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,378
По умолчанию

Господа, если кого-то какие-то сообщения заставляют нервничать, советую посчитать до десяти, прежде, чем отвечать. Кому не помогло - проходим молча мимо.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
невозможно преобразовать 'const char' в 'char triest Помощь студентам 1 10.12.2011 13:41
const char * str ser70 Общие вопросы C/C++ 7 13.09.2011 19:55
'int' в 'const char *' frommars Visual C++ 5 05.07.2011 19:24
'unsigned char [512]' в 'const char *' frommars Visual C++ 8 02.07.2011 13:37
преобразование типов char-const char student101 Помощь студентам 8 01.12.2010 20:45