2

在使用基于 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,但没有任何运气。我们被困住了,因为我们的项目没有这个就无法编译。

4

0 回答 0