次のようなコードがある場合:
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 データが必要です。