Пакет, использующий множественное наследование, вызывает нарушение прав доступа в C ++ Builder 10.1 Berlin Update 2 с использованием 32-разрядных и 64-разрядных компиляторов на основе CLANG.
Как только класс с множественным наследованием имеет код реализации, CLANG вызывает ICE.
Вот простой код, который вызовет проблему:
// vcl
#include <System.Classes.hpp>
class TClass1
{
public:
virtual __fastcall ~TClass1() = 0;
};
class PACKAGE TDummy : public TComponent, public TClass1
{
public:
/**
* Pure virtual VCL style destructor
*@note Needed to allow WTControlObserver destruction directly (otherwise children destructors
* are never called)
*/
virtual __fastcall ~TDummy()
{}
void __fastcall test();
};
И реализация (должна быть в CPP):
void __fastcall TDummy::test()
{
int i = 0;
}
Я писал в Embarcadero несколько раз, но безуспешно. Мы застряли, так как наши проекты не могут компилироваться без этого.
Задача ещё не решена.
Других решений пока нет …