Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Наследование IDirectDrawSurface 
:(
    Опции темы
kurlyak
Дата 8.8.2012, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 7.11.2007

Репутация: 1
Всего: 3



В программе наследую IDirectDrawSurface (пишу Хук). Переопределил все калссы интерфейса IDirectDrawSurface. Но при компиляции все равно пишет:

error C2259: 'MyDirectDrawSurface' : cannot instantiate abstract class    

Что делать?

PM MAIL   Вверх
korian
Дата 8.8.2012, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: нет
Всего: 17



Так не бывает.

IUnknown интерфейс реализовали? Если да, то по любому есть что-то не реализованное.
PM   Вверх
kurlyak
Дата 8.8.2012, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 7.11.2007

Репутация: 1
Всего: 3



Код

class MyDirectDrawSurface : public IDirectDrawSurface
{
public:

MyDirectDrawSurface(IDirectDraw *device, IDirectDrawSurface * surface) : m_device(device), m_surface(surface)
{
}

STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj)
{
return m_surface->QueryInterface(riid, ppvObj);
}

STDMETHOD_(ULONG,AddRef)(THIS)
{
return m_surface->AddRef();
}

STDMETHOD_(ULONG,Release)(THIS)
{
ULONG count = m_surface->Release();
if(0 == count)
delete this;
return count;
}

..........................
}


Дальше в коде следует переопределение всех 36 функций интерфейса IDirectDrawSurface. Но вы говорили что нужно переопределить функции IUnknown. То есть это надо специально писать так:

Код

class MyDirectDrawSurface : public IDirectDrawSurface, IUnknown
{
public:

MyDirectDrawSurface(IDirectDraw *device, IDirectDrawSurface * surface) : m_device(device), m_surface(surface)
{
}
............................
}


То есть в родители класса еще добавить IUnknown? Потому что как видите QueryInterface, AddRef, Release у меня реализованы в классе.

Что это может быть такое?
PM MAIL   Вверх
kurlyak
Дата 8.8.2012, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 7.11.2007

Репутация: 1
Всего: 3



Все отлично, спасибо за интерес. Одна функция была переопределена не правильно (не те параметры).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0389 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.