Здравствуйте все
Множественное наследование VCL классов не поддерживается.
Я же создал не VCL-класс (правда использующий всякие там TList*) и сделал его производным от 2х интерфейсов.
Все компилится, но работают только методы 1го в списке интерфейса.
class myclass: public Interface1, public Interface2
{
---
---
}
в таком варианте вызываются только методы Interface1, а если их местами поменять — то только методы Interface2.
Кто нить сталкивался с подобным?
Здравствуйте, DavidSel, Вы писали:
DS>Здравствуйте все
DS>Множественное наследование VCL классов не поддерживается.
DS>Я же создал не VCL-класс (правда использующий всякие там TList*) и сделал его производным от 2х интерфейсов.
DS>Все компилится, но работают только методы 1го в списке интерфейса.
DS>DS>class myclass: public Interface1, public Interface2
DS>{
DS>---
DS>---
DS>}
DS>
DS>в таком варианте вызываются только методы Interface1, а если их местами поменять — то только методы Interface2.
DS>Кто нить сталкивался с подобным?
1. Интерфейсы не наследуют, а реализовывают
2. Если уж взялся за Си, то почитай интелектуальные указатели... подозреваю что у тебя идет явное преобразование вместо запроса интерфейса
MyObj.QueryInterface(Interface2, MyObj2);
Здравствуйте, DavidSel, Вы писали:
DS>Все компилится, но работают только методы 1го в списке интерфейса.
Что значит "не работают"? Не компилируется? Исключение вылетает на рантайме?
Лучше приведи более полный пример, что было написано и как оно использовалось...
... << RSDN@Home 1.1.4 beta 3 rev. 215>> (WinAmp: Walt Disney Pictures — Can You Feel the Love Tonight (End Title))
Здравствуйте, DavidSel, Вы писали про это?
class A{
public:
virtual void RunA()=0;
};
class B{
public:
virtual void RunB()=0;
};
class C: public A, public B{
public:
virtual void RunA(){ printf("RunA\n"); }
virtual void RunB(){ printf("RunB\n"); }
};
int _tmain(int argc, _TCHAR* argv[])
{
C c;
A* pa = &c;
pa->RunA();
B* pb = (B*)pa;
pb->RunB(); // error! Call RunA instead RunB !
B* pb1 = (B*)(C*) pa; // pb1 != pb
pb1->RunB(); // good!
return 0;
}
... << RSDN@Home 1.1.4 beta 3 rev. 185>>