![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
в общем прошу просветить меня про правильное написание интерфейсов на С++.
думаю на основе класса наверно: 1)правильно ли обьявляю интерфейс: Код:
2)соглашения о вызовах, какое лучше ставить? stdcall? 3)совместимость с С, там через структуры, но, там помоему нет автопередачи себя(this) как в плюсах? как верно обьявить интерфейс там? заранее спасибо. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,091
|
![]()
1. Хотите совместимость с Си, не используйте классы и интерфейсы.
2. Хотите таки экспортировать интерфейсы из DLL без COM? 3. Не забывайте, что интерфейсы в С++ по сути являются абстрактными классами, посему решайте как быть с деструкторами. Добавлять ли их виртуальные в интерфейс или не давать удалять объекты по указателю на интерфейс... |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
1)насколько я знаю, в С их можно как то делать.
судя по заголовочникам DirectX(но у меня сейчас их нет) но вот как? 2)ну а в чем мне выгода от COM? там тоже ведь как средство связи используются интерфейсы. 3)скорее всего буду использовать счетчик ссылок. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#4 | |
C++ hater
Старожил
Регистрация: 19.07.2009
Сообщений: 3,333
|
![]()
я не писал на ком, но что ты хочешь сделать? запихнуть в dll реализацию интерфейса?
2pu4koff Цитата:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 13.12.2010 в 13:28. |
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
ну в общем то да, мне нужно чоб реализация(точнее код оной) были именно в ДЛЛ.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#6 |
C++ hater
Старожил
Регистрация: 19.07.2009
Сообщений: 3,333
|
![]()
2Пепел Феникса
объявляешь интерфейс Код:
пишем dll. реализуем твой интерфейс Код:
Код:
пишем приложение. как я уже сказал, класс интерфейса у нас общий для приложения и дллок. опять же, если ты под виндой - динамически подгружаешь свою длл через loadLibrary Код:
Код:
Код:
вроде нигде не лажанул. на самом деле, все это тривиально. этой технике 100 лет в обед да, и кстати. если это для тебя в новинку - тебе рано лезть в ком. поверь
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 13.12.2010 в 14:09. |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
спасибо)
1)если у меня интерфейс будет расширен не виртуальными методами, то я не испорчу его? 2)а что насчет С? 3)соглашение о вызовах какое ставить?(ДЛЛ будет не только для С++) 4)можно ли использовать ссылки вместо указателей? ЗЫ: мне в новинку лишь интерфейсы. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#8 |
C++ hater
Старожил
Регистрация: 19.07.2009
Сообщений: 3,333
|
![]()
1. с чего бы
2. а что насчет си? 3. никогда с этим не заморачивался. ну оставь stdcall, в другом языке его явно задашь, если он не по дефолту 4. ссылки? + си? + второй язык? как бы поделикатнее выразиться... не, не могу поделикатнее. полиморфные возможности класса реализуются за счет таблицы вирт функций, которую имеет класс, созданный в памяти динамически, имеющий хотя бы 1 вирт функцию. какие ссылки? да и вряд ли можно заставить работать такую дллку не из с/с++. функцию-конструктор ты экспортнешь, и что дальше? придется писать аналогичный интерфейс для твоего другого языка, и как то их совмещать. я таким не занимался
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 13.12.2010 в 15:04. |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
1,3 спасибо)
2)как в С обьявить интерфейс? через указатель на функцию в структуре? 4)я имел в виду здесь можно и использовать Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#10 | |
C++ hater
Старожил
Регистрация: 19.07.2009
Сообщений: 3,333
|
![]()
2Пепел Феникса
Код:
Код:
Цитата:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
|
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Длл на х32 | CrystaLize | Общие вопросы C/C++ | 1 | 25.12.2009 17:58 |
Ошибка в длл | Яр|/||< (^_^) | Общие вопросы Delphi | 2 | 16.10.2009 15:58 |
выгрузка длл | user_jasser | Win Api | 6 | 10.03.2009 14:09 |
Фрэймы из ДЛЛ | SunKnight | Общие вопросы Delphi | 4 | 06.01.2008 16:32 |