親のポインタが子オブジェクトを指さすことができません
494 ワード
親クラスのポインタは、c++でマルチステートと呼ばれるサブクラスのオブジェクトを指します.
もちろん、多態にはもっと深い解釈がある.
しかし、なぜ親のポインタが子のオブジェクトを指さすことができないことがあるのでしょうか.
次の2つのファイルのコードがあります.
なぜなら、コンパイル速度を向上させるために、
Class AがコンパイラAに存在することを伝えるなど、前置き宣言をします.
そして私たちはA aをすることができます.オブジェクトの定義
しかしあなたがこのように書く時A*a=b;
コンパイラはAがBの親であることを知らないので、
新聞を間違えた.最も簡単な方法はBのヘッダファイルを含めることです.
もちろん、多態にはもっと深い解釈がある.
しかし、なぜ親のポインタが子のオブジェクトを指さすことができないことがあるのでしょうか.
次の2つのファイルのコードがあります.
//B.h
class B : public A{};
//main.cpp
Class A;
Class B;
void fun(B* b)
{
A* a = b; //
}
なぜなら、コンパイル速度を向上させるために、
Class AがコンパイラAに存在することを伝えるなど、前置き宣言をします.
そして私たちはA aをすることができます.オブジェクトの定義
しかしあなたがこのように書く時A*a=b;
コンパイラはAがBの親であることを知らないので、
新聞を間違えた.最も簡単な方法はBのヘッダファイルを含めることです.