在c ++

时间:2016-10-29 15:32:45

标签: c++ dynamic-cast

我在c ++中有4个类。动物是超级类,蛇和老虎继承自动物,但也继承自危险动物。我已经实现了一个函数来检查Snake或tiger是否是DangerousAnimal的一个实例。但是我发现在c ++中实现它有问题

我的代码是:

bool Vet::examine (Animal *someAnimal){

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

错误是

dillu24@dillu24-VirtualBox:~/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)){

1 个答案:

答案 0 :(得分:2)

dynamic_cast的语法为dynamic_cast<TargetType>(variable),因此您必须撰写dynamic_cast<DangerousAnimal*>(someAnimal)