Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблемы с KEvent  (Прочитано 4444 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Паша
Гость
« : 05-11-2003 12:26 » 

Кто-нибудь использовал subj?
Проблема в следующем. Пытаюсь создать named event, делаю все как в хелпе. Но вместо функции
KEvent::Initialize(KUstring &)
попадаю в
KEvent::Initialize(HANDLE, ACCESS_MASK)
соотвественно инициализация всегда заканчивается провалом.
Собственно кто-нибудь сталкивался? И вообще что делать и кто виноват?
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #1 : 05-11-2003 12:38 » 

Цитата

И вообще что делать и кто виноват?


Ага. Ну виноват ты. Частично с тобой вину готов разделить гражданинин Дании, работающий в США, по фамилии Страуструп.

А дело вот в чем. Это же С++ и там применена перегрузка функций, посмотрим на это дело
VOID Initialize(PKEVENT);
VOID Initialize(HANDLE hEvent, ACCESS_MASK access = OBJECT_TYPE_ALL_ACCESS);
VOID Initialize(KUstring& Name, EVENT_TYPE type);

Что мы видим?
Если ты передал ф-ции указатель на VOID* или какой-то другой тип, кроме KEVENT , то будет вызывана ф-ция VOID Initialize(HANDLE hEvent, ACCESS_MASK access = OBJECT_TYPE_ALL_ACCESS); так как HANDLE это указатель на VOID*, а любой тип можно привести к VOID*.

А вот если ты хочешь вызвать VOID Initialize(PKEVENT); то надо передать указатель на тип PKEVENT или явно привести типы Initialize((PKEVENT)pKevent);

То же и с VOID Initialize(KUstring& Name, EVENT_TYPE type), проверь типы, которые ты передаешь ф-ции, может ты со вторым аргументом накосячил- он тоже принимает роль при решении того, какую из перегруженных ф-ций вызвать. Типы аргументов должны точно соответсвовать тем что даны в определении ф-ции.

Посмотри правила выбора перегруженных функций в С++.

P.S. А вобще-то я не работаю с DriverWorks, так что это объяснение- первое что мне пришло в голову. Но оно по-моему верное.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines