在使用基于 CLANG 的 32 位和 64 位编译器的 C++Builder 10.1 Berlin Update 2 中,使用多重继承的包会导致访问冲突。
一旦具有多重继承的类具有实现代码,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,但没有任何运气。我们被困住了,因为我们的项目没有这个就无法编译。