私はコンパイルすべきではないと思ういくつかのコードを書いています。印刷基本クラスのオブジェクトの派生クラスの呼び出しメソッド
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;
}
値は明らかに迷惑メールであるが、これもコンパイルする必要があります。私は、次のように基底クラスのオブジェクトためにはstatic_cast-EDポインタに派生クラスのメソッドを呼び出すのですか? gcc
どうすればそのことができますか?
なぜコンパイルしないのですか?あなたはBをDとしてキャストしています。すべてのコンパイラが知っているので、D – Falmarri
の操作をしています.C++コードでprintfを使わないでください。 – BatchyX
@BatchyX: 'printf'は危険なほど安全ではないかもしれませんが、' cout'や友人よりもかなり速いです。 – Puppy