C++ では、問題は単純です。
私は2つのクラスを持っています.1つは実装の一部としてもう1つを含んでいます.
struct A
{
void do_something()
{
};
};
struct B
{
A obj_A;
void hello_world()
{
};
};
ここで問題は、sizeof(B) とタイプ B のオブジェクトを実行するときに A が B の一部である場合、構造 B が 1 バイト大きくなることです。A には 100% 非仮想メンバーのみが含まれます (仮想テーブルは必要ありません)。 typeid チェックの必要はありません。B から不要なバイトを完全に削除する方法 (コンパイラ ディレクティブなど) はありますが、B を介して A のメンバー関数にアクセスする方法はありますか?
余分なバイトは、A の名前「A」に char* を追加したコンパイラであるとしか考えられませんが、他のアイデアが役立つ場合があります。