C++では問題が簡単です。C++ RTTI継承によりクラスサイズが増加する
私は実装の一部としてもう一方を含む2つのクラスを持っています。
struct A
{
void do_something()
{
};
};
struct B
{
A obj_A;
void hello_world()
{
};
};
今問題は、私ははsizeof(B)とタイプBのAのオブジェクトを実行するとき、AはBの一部である場合、構造Bは、1バイト大きい100%だけ唯一の非バーチャルを含むしようとしていることです(仮想テーブルは必要ありません)、タイプIDチェックの必要はありません。 Bから不要なバイトを完全に削除する方法はありますか(コンパイラ・ディレクティブのような)?
私は、余分なバイトがAの名前 "A"にchar *を追加したコンパイラだと仮定することができますが、それ以外のアイデアは役に立ちます。
(それは我々がオペレータ&を使用するときに異なるアドレスを持つべきである)0にすることはできません'g ++ -fno-rtti'でコンパイルしてRTTIを無効にします。問題が解決しない場合は、問題を示す完全なC++ソースファイルを提供してください。 – pts
FWIW:私はsizeof(B)== 1があるたびに、RTTIを有効または無効にしてobj_Aメンバーの有無にかかわらずg ++(バージョン4.2.4)でコードをコンパイルしようとしました。あなたの質問から。 –