Наследование от TAutoIntfObject
От: AVSergeyev  
Дата: 22.11.07 09:51
Оценка:
Требуется создать класс-наследник от TAutoIntfObject, реализующий еще один интерфейс, описанный в библиотеке типов.
в Делфи это удавалось без проблем:

type TICamera = class(TAutoIntfObject, ICamera)
...

И затем, создавался экземпляр

OleCheck(LoadRegTypeLib(LIBID_DataStorageProject, DataStorageProjectMajorVersion, DataStorageProjectMinorVersion, 0, TypeLib));
camera := TICamera.Create(TypeLib, ICamera);

Требуется сделать то же самое в C++ Builder

class TImageLayerObjectImpl : public TAutoIntfObject, public ICamera

Ругается следующими словами:
E2278 Multiple base classes not supported for VCL classes.

приводя меня в изумление.
Писать объект на Builder — принципиально.

Кто нибудь может подсказать, как это можно оформить?
Re: Наследование от TAutoIntfObject
От: SuhanovSergey  
Дата: 22.11.07 13:30
Оценка:
Здравствуйте, AVSergeyev, Вы писали:

AVS>Ругается следующими словами:

AVS>E2278 Multiple base classes not supported for VCL classes.

AVS>приводя меня в изумление.

AVS>Писать объект на Builder — принципиально.

AVS>Кто нибудь может подсказать, как это можно оформить?

Cоздание COM-объектов с помощью VCL, т.е. на базе TAutoIntfObject, не поддерживается в С++Builder-е.
Пользуйтесь ATL.
Re[2]: Наследование от TAutoIntfObject
От: AVSergeyev  
Дата: 22.11.07 13:35
Оценка:
Здравствуйте, SuhanovSergey, Вы писали:

SS>Cоздание COM-объектов с помощью VCL, т.е. на базе TAutoIntfObject, не поддерживается в С++Builder-е.

SS>Пользуйтесь ATL.

Спасибо.
Re[3]: Наследование от TAutoIntfObject
От: shvonder Россия  
Дата: 22.11.07 16:42
Оценка:
Здравствуйте, AVSergeyev, Вы писали:

AVS>Здравствуйте, SuhanovSergey, Вы писали:


SS>>Cоздание COM-объектов с помощью VCL, т.е. на базе TAutoIntfObject, не поддерживается в С++Builder-е.

SS>>Пользуйтесь ATL.

AVS>Спасибо.


Добавлю, что множ. наследоваться от VCL таки можно, но от только полность абстрактного класса:

class MyInterface{
  virtual void F1() = 0;
#ifndef __BORLANDC__
  virtual ~MyInterface(){}
#endif
};

class TFMain : public TForm ,public MyInteraface{
...
};
Re[4]: Наследование от TAutoIntfObject
От: Tonal- Россия www.promsoft.ru
Дата: 16.12.07 15:04
Оценка:
Здравствуйте, shvonder, Вы писали:
S>Добавлю, что множ. наследоваться от VCL таки можно, но от только полность абстрактного класса:
Чтобы это работало, нужно чуток подправить:
S>
S>struct MyInterface{
S>  virtual void F1() = 0;
S>#ifndef __BORLANDC__
S>  virtual __fastcall ~MyInterface() = 0
S>#endif
S>};
inline MyInterface::~MyInterface() {}

S>class TFMain : public TForm, public MyInteraface{
S>...
S>};
S>
... << RSDN@Home 1.2.0 alpha rev. 786>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.