0

重複の可能性:
dynamic_castの型は、完全なクラス型へのポインターまたは参照である必要があります。そうでない場合は、void *

名前空間Fuzzyがあり、CuteDogという抽象クラス(別の抽象クラスから継承)があります。

PuppyArmyという新しいクラスを書いています

PuppyArmyのCuteDogへのポインターが欲しいのですが、ヘッダーファイルでこれを試しています。

namespace Fuzzy { class CuteDog }

using namespace Fuzzy;

class PuppyArmy { 
  ...
  CuteDog *cute;
}

それから私のcppファイルにあるとき私はこれを持っています

using namespace Tough;

....
cute = dynamic_cast<::Fuzzy::CuteDog*>(foo()); // where foo() returns the parent class of CuteDog*

コンパイラは私に言っています

 C2440: '=' : cannot convert from Fuzzy::CuteDog * to PuppyArmy::Fuzzy::CuteDog *

私がここで間違っていることへのポインタはありますか?

4

2 に答える 2

1

CuteDog実装を定義するヘッダーファイルを含めていないようです

于 2012-11-02T18:55:55.693 に答える
1

誰かがここでタイトルに導かれた場合。これは、別の名前空間からクラス (abstract または not) を前方宣言する方法です。

namespace different {
  class SomeClass;
}
于 2012-11-02T19:46:17.707 に答える