Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Множественное наследование интерфейсов, как в JVCL, Как реализовать в Builder? 
:(
    Опции темы
ZVano
Дата 25.5.2011, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Пробую сотворить движек приложения с плагинами по аналогии с реализацией в JVCL ориентируясь на пример из vcl\examples\JvPlugin\6PluginPackage\
В Delphi нет множественного наследования классов, но есть наследование Один класс - множество интерфейсов.
В С++ нет понятия интерфейсов, есть множественное наследование классов, но его нельзя выполнять для классов VCL.

Как в С++ реализовать следующий финт ушами от Delphi?
Код Delphi:
Код

//JvPlgIntf.inc
unit JvPlgIntf;

// holding interfaces for plugins and main application
// remember to always produce unique GUIDs (Ctrl+Shift+G) - never reuse them after changes

interface

uses
  Windows, Classes;

// A common interface for all plugins
type
  IMyMainAppInterface = interface;
  IMyPluginInterface = interface
    ['{A7F68489-2B52-4E59-B5E8-2044C7F67C09}']

    procedure ShowPlug(Sender: TObject);
    // provide a means for the app to make itself known to the plugin
    procedure Init(const MainApp:IMyMainAppInterface);
    // ...
  end;


  // if plugins shall be able to access the mainapplication,
  //   an interface for the main application should be defined as well
  IMyMainAppInterface = interface

    ['{00D251C6-8D61-43F7-88F8-35F7F7EC364D}']
    procedure DoSomethingSpecial(Name: string; OnClick: TNotifyEvent);

    // this way properties can be used:
     function GetPosition : TPoint;
     procedure SetPosition(const NewPos : TPoint);
     property Position : TPoint read GetPosition write SetPosition;
  end;


implementation

end.


// ufrmMain.pas
unit ufrmMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, JvPluginManager, ExtCtrls, JvComponent, JvPlgIntf;

type
  TfrmMain = class(TForm, IUnknown, IMyMainAppInterface)
    JvPluginManager1: TJvPluginManager;
    //...
  public
    function GetPosition : TPoint;
    procedure SetPosition(const NewPos : TPoint);
    procedure DoSomethingSpecial(Name: String; OnClick: TNotifyEvent);
  end;



Добавлено @ 18:00
Обратите внимание TfrmMain наследуется от TForm - класса VCL и интерфейсов IUnknown, IMyMainAppInterface

Это сообщение отредактировал(а) ZVano - 25.5.2011, 20:30


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
borisbn
Дата 26.5.2011, 10:50 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Цитата(ZVano @  25.5.2011,  17:58 Найти цитируемый пост)
Как в С++ реализовать следующий финт ушами от Delphi?

вообще-то, множественное наследование в VCL на Си++ невозможно, но попробуй включить в проект Builder'а приведённый тобой исходник на Delphi. После компиляции Builder создаст файл *.hpp. Глянь, что там. Может что и получится... хотя, врядли.

Это сообщение отредактировал(а) borisbn - 26.5.2011, 10:50


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

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


 




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


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

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