私は2つのクラスAとBを持っています。BはAから派生しています。引数はBのオブジェクトです。私は*またはB *に動的キャストvoid *型にしようとすると不完全なクラス:void *をdynamic_cast経由でクラス型へのポインタに変換します
class B;
typedef double (*func_ptr)(B *);
class A
{
private:
func_ptr func;
};
class B: public A
{
private:
double C;
};
、私は次のエラーを取得:
void *v_ptr;
A *a_ptr = dynamic_cast<A*>(v_ptr);
B *b_ptr = dynamic_cast<B*>(v_ptr);
error: the operand of a pointer dynamic_cast must be a pointer to a complete class type
を私はなぜこれが起こっているか見当もつかない次のように定義されました。いずれのクラスにも仮想メソッドはありません。クラスの前方宣言はメンバーを宣言するために使用することはできませんが、ここではポインタを定義するために使用されています。
誰でもこのエラーが発生している理由を説明できますか?
* "動的キャストしようとすると* *" - それはdynamic_castでは許可されません。あなたの問題はすべてその文章にあります。 – StoryTeller
おそらく転写エラーですが、もしそうでなければ、このセミコロン 'プライベート 'はあなたに何の恩恵も与えていません。 – user4581301
@ user4581301はい、ご迷惑をおかけします。 – Harshad