C++作业 请问这是什么问题啊

 

【问题描述】按以下要求进行编程:

(1)编写动物Animal类,其中包含虚函数Shout()来表示动物叫声;

(2)在Animal类的基础上,派生出Dog类和Cat类,要求对这两个类的Shout()函数进行重写,Dog类的Shout()函数输出"WangWangWang"的信息,Cat类Shout()函数输出"MiaoMiaoMiao"的信息;

(3)在主函数中定义两个Animal指针a1和a2、一个Dog对象dog和一个Cat对象cat,并将a1指向dog对象、将a2指向cat对象,再分别调用a1和a2的Shout()函数,输出对应的结果。

#include <iostream>
using namespace std;

class Animal{
    public:
        Animal(){}
        virtual char Shout()=0;
        
};

class Dog:public Animal{
    public:
        Dog(){}
        Dog(char s){
            this->s=s;
        }
        char Shout(){
            cout<<"WangWangWang"<<endl;
            return 0;
        }
    private:
        char s;
};

class Cat:public Animal{
    public:
        Cat(){}
        Cat(char s){
            this->s=s;
        }
        char Shout(){
            cout<<"MiaoMiaoMiao"<<endl;
            return 0;
        }
    private:
        char s;
};

int main(){
    Dog dog();
    Cat cat();
    Animal *ani;
    ani=&dog;
    dog->Shout();
    return 0;
}

错误提示了  [Error] cannot convert 'Dog (*)()' to 'Animal*' in assignment

Dog dog();
Cat cat();

定义Dog,Cat的变量不能有括号,改变如下:

Dog dog =new Dog();
Cat cat = new Cat();

你要问什么问题呀

请说明作业要求, 你碰到的具体困难,错误信息,等。 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

也许对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y