0

次のようなコードがある場合:

class A {
public:
    int data1;
}

class B {
public:
    virtual void test() {}
}

class C : public A, public B {
    int data2;
}

C のインスタンスを作成すると、そのメモリ レイアウトは次のようになります。

B::vtable
A::data1
C::data2

しかし、私が実際に欲しいのは次のようなものです:

A::data1
B::vtable
C::data2

継承順序を強制する何らかのキーワードはありますか?

コンパイルにVC++ 15を使用していますが、問題は、すべてのクラスにvoid *ポインターを使用してvtableを「偽造」する大きな自動生成コードベースを使用していることです...今、そのコードベースを使用して継承します。インスタンスは、ロードする別のフレームワークで正しく動作するために、メモリ レイアウトの特別な順序が必要になりました。そして、そのフレームワークには、先頭に A データが必要です。

4

0 に答える 0