コンパイルすべきではないと思われる数行のコードを書きました。次のように、基本クラスのオブジェクトへの static_cast-ed ポインターで派生クラスのメソッドを呼び出しています。
class B {};
class D: public B
{
public:
void bar() { printf("%d\n", m_i); }
private:
int m_i;
};
int main()
{
B b;
D* d = static_cast<D*>(&b);
d->bar();
return 0;
}
出力された値は明らかにがらくたですが、これはコンパイルする必要がありますか? どうgcc
やってそれを行うことができますか?