2016-10-29 8 views
-2

私は4つのクラスをC++で持っています。動物はスーパークラスであり、SnakeとTigerはAnimalから継承していましたが、Dangerous Animalからも継承しています。 SnakeやtigerがDangerousAnimalのインスタンスであるかどうかをチェックする関数を実装しました。しかし、私はC++C++でdynamic_castを使用

に私のコードを、それをimplemtingで問題を発見しています:

bool Vet::examine (Animal *someAnimal){ 

     if(DangerousAnimal* s = dynamic_cast<DangerousAnimal*>(Animal)){ 
      return false; 
     }else{ 
      return true; 
     } 
    } 

エラーが

[email protected]:~/Desktop/OOP/Lab1$ g++ -std=c++11 -oAnimalWellBeingLauncher AnimalWellBeingLauncher.cpp q1.cpp 
q1.cpp: In member function ‘bool Vet::examine(Animal*)’: 
q1.cpp:122:64: error: expected primary-expression before ‘)’ token 
    if(DangerousAnimal* s = dynamic_cast<DangerousAnimal*>(Animal)){ 
+0

コード、コード、コードはどこですか? [MCVE](http://stackoverflow.com/help/mcve):最小(OK)完全(!!)確認可能な(!!)例を提供してください。あなたの例は完全でも検証可能でもないので、コードをコンパイルするには複数のラウンドトリップが必要です。 –

答えて

2

dynamic_castの構文はdynamic_cast<TargetType>(variable)ですので、あなたがdynamic_cast<DangerousAnimal*>(someAnimal)を記述する必要があります。

+0

Llogeソースタイプが多形でないと言っています –

+0

@DylanGalea - いいえ、エラーメッセージは、 'Animal'は' dynamic_cast'の引数の種類ではないと言っています。この答えは「someAnimal」である必要があります。 –

+2

@PeteBecker:Dylanは_next_エラーを報告しています。これは、クラスが正しく定義されていないためです。 –

関連する問題