Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Visual C++
Перезагрузить страницу Агрегация класса
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
daniilpetrov daniilpetrov вне форума
Member
 
Аватар для daniilpetrov
 
Сообщений: 213
Сказал(а) спасибо: 33
Поблагодарили 3 раз(а) в 2 сообщениях
Регистрация: 10.06.2011
Адрес: Россия
По умолчанию Агрегация класса - 21.01.2015, 08:18

Здравствуйте! Возникла следующая проблема: в одном файле у меня хранится класс DirectInputDevice, во втором PlayerControlClass, в третьем файле я создаю класс PlayerControl:
cpp Код:
PlayerControlClass* PlayerControl = new PlayerControlClass(hWnd);
в конструкторе этого класса создаётся класс DirectInput:
cpp Код:
PlayerControlClass::PlayerControlClass(HWND hWnd)
{
    DirectInputDevice* DirectInput = new DirectInputDevice(hWnd);
}
в классе PlayerControlClass создаваемый класс DirectInput находится в разделе public:
cpp Код:
public:
    PlayerControlClass(HWND hWnd);
    ~PlayerControlClass();
    DirectInputDevice* DirectInput;
а в разделе public создаваемого класса DirectInput есть переменная hr:
cpp Код:
public:
    DirectInputDevice(HWND hWnd);
    ~DirectInputDevice();
    HRESULT hr;
сразу после создания в третьем файле класса PlayerControl, я проверяю, создалось ли устройство DirectInput:
cpp Код:
if (FAILED(PlayerControl->DirectInput->hr)) success = FALSE;
и после компиляции в этом месте приложение переходит в серый экран и выдаёт аварийное завершение (само устройство DirectInput создаётся без проблем). В чём может быть загвоздка? Вот на всякий случай код присвоения переменной hr:
cpp Код:
if (!FAILED(hr = DirectInput8Create(GetModuleHandle(NULL), DIRECTINPUT_VERSION,
    IID_IDirectInput8, (VOID**)&g_pDI, NULL)))
{
    hr = InitDirectKeyboard(hWnd);
    hr = InitDirectMouse(hWnd);

    ZeroMemory(g_Controllers, sizeof(CONTROLER_STATE)* MAX_CONTROLLERS);
}
Ответить с цитированием
  (#2 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,457
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 21.01.2015, 09:58

cpp Код:
PlayerControlClass::PlayerControlClass(HWND hWnd)
{
    DirectInputDevice* DirectInput = new DirectInputDevice(hWnd);
}
Меняем на
cpp Код:
PlayerControlClass::PlayerControlClass(HWND hWnd)
{
    this->mDirectInput = new DirectInputDevice(hWnd);
}
---
cpp Код:
public:
    PlayerControlClass(HWND hWnd);
    ~PlayerControlClass();
    DirectInputDevice* DirectInput;
меняем на
cpp Код:
public:
    PlayerControlClass(HWND hWnd);
    ~PlayerControlClass();
    DirectInputDevice* DirectInput();

private:
    DirectInputDevice* mDirectInput;
--
cpp Код:
if (FAILED(PlayerControl->DirectInput()->hr)) success = FALSE;
Почему hr - публичная переменная?? И к тому же переписывается несколько раз?
Ответить с цитированием
Пользователь сказал cпасибо:
daniilpetrov (21.01.2015)
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание класса в с++ Anya13 Задания за деньги 4 03.04.2013 10:04
ADT для класса-наследника imported_Maximys Общие вопросы создания ПО 3 16.11.2010 13:22
Создание класса по типу класса Oburec Delphi 1 20.09.2010 11:17
Создание объектов дочернего класса из метода базового класса Jonano С/С++ 14 01.03.2010 17:40
Использование класса MFC на API kodjan Visual C++ 4 23.10.2007 11:14
Как узнать имя класса в C/C++ sq-Weezee Visual C++ 10 25.04.2007 22:42
Доступ к переменным класса из метода класса no_NaMe Assembler 5 27.02.2007 23:37
Указатель из класса на функцию другого класса NVSarge С/С++ 3 22.02.2007 16:24
STL. Вектор как член класса Laperus С/С++ 1 18.02.2006 18:52
Объявление класса CPropertySheet Lex Visual C++ 3 11.10.2003 23:45
Вызов метода класса, не создавая при этом объекта этого класса в MessageBox LeM2003 Visual C++ 6 03.10.2003 17:05



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов