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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2012, 17:21   #1
Кудаив
Пользователь
 
Регистрация: 19.04.2012
Сообщений: 57
По умолчанию Direct X

Доброго дня форумчане!
Недавече начал разбираться в примерах Sampels DX SDK, и наткнулся на такую штуку, что используемые методы классов, к примеру ID3DXEffect, IDirect3DDevice9 и другие, являются чисто виртуальными функциями.
однако активно используются в коде примеров - как такое возможно???
Кудаив вне форума Ответить с цитированием
Старый 06.09.2012, 17:26   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это просто обьявления интерфейсов.
и делается так чтоб вы не могли создать интерфейс.
а вы лишь получаете обьект реализующий интерфейс.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.09.2012, 16:34   #3
Кудаив
Пользователь
 
Регистрация: 19.04.2012
Сообщений: 57
По умолчанию

это понятно что они являются интерфейсами, но если в примере я навожу на метод такого абстрактного класса и там чёрным по белому написано
функция такая-то=0;
получается используя я её компилятор ругаться не будет, но криков будет при выполнении или линковке, скорее при выполнении...
как я понимаю, нужно отнаследоваться от этих интерфейсов, создать тело функции и тогда уже с ней можно работать, или я чего то не понимаю?

или же они всё таки определены в либах эти методы? разве такое возможно, чтобы в одном файле функция была объявлена как чисто виртуальная, а в другом файле была уже описана вместе с реализацией?
Кудаив вне форума Ответить с цитированием
Старый 07.09.2012, 16:41   #4
Кудаив
Пользователь
 
Регистрация: 19.04.2012
Сообщений: 57
По умолчанию

Вообще говоря, класс можно сделать абстрактным, даже если все его методы определены. Иногда это необходимо сделать для того, чтобы быть уверенным в том, что объект данного класса никогда не будет создан. Можно задать один из методов как чисто виртуальный, но, тем не менее, определить его реализацию.

значит надо подключать нужные либы...
Кудаив вне форума Ответить с цитированием
Старый 07.09.2012, 17:53   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
функция такая-то=0;
получается используя я её компилятор ругаться не будет
Смотря какой. Современные матерят и не компилят.

Цитата:
как я понимаю, нужно отнаследоваться от этих интерфейсов, создать тело функции и тогда уже с ней можно работать, или я чего то не понимаю?
Аха. Это ж основы классов.

Цитата:
или же они всё таки определены в либах эти методы?
Почему "или"? Одно другому не противоречит. Если вы про ДиректХ, то да. Ведь не зря ж вы на комп его ставите. )

Цитата:
значит надо подключать нужные либы
Для вас это открытие? Еще открытие - создать просто окно тоже либа нужна.
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Direct Sound Валерий LX C# (си шарп) 0 28.09.2011 17:42
DC++(Direct Connect) azaznio Компоненты Delphi 2 15.02.2011 15:49
Direct 10 в Windows XP +Sergey+ Windows 5 01.02.2009 02:33
Direct X 9.0 Мануал на русском Andrew#90 Общие вопросы .NET 0 23.11.2008 22:35