为了账号安全,请及时绑定邮箱和手机立即绑定

我在cv6.0编译不能通过???

我在cv6.0编译不能通过???

正在回答

2 回答

#include<cstdio>
#include<cstring>
#include<iostream>
#include<typeinfo>
using namespace std;
class Movable{
public:
    virtual void mmove() = 0;
};
class Bus:public Movable
{
public:
    ~Bus(){}
    virtual void mmove(){
        cout << "Bus -- move" << endl;
    }
    void carry(){
        cout << "Bus -- carry" << endl;
    }
};
class Tank:public Movable
{
public:
    ~Tank(){}
    virtual void mmove(){
        cout << "Tank -- move" << endl;
    }
    void shot(){
        cout << "Tank -- shot" << endl;
    }
};
void dosomething(Movable *obj){
    obj->mmove();
  //  cout << typeid(*obj).name() << endl;
    if( typeid(*obj) == typeid(Bus) ){
        Bus *bus = dynamic_cast<Bus*>(obj);
        bus->carry();
    }else if( typeid(*obj) == typeid(Tank) ){
        Tank *tank = dynamic_cast<Tank*>(obj);
        tank->shot();
    }
}
int main(){
    Bus *bus = new Bus();
    Tank *tank = new Tank();
    dosomething(bus);
    dosomething(tank);
    delete bus;
    delete tank;
    bus = NULL;
    tank = NULL;
    return 0;
}


1 回复 有任何疑惑可以回复我~

可能是少了头文件#include<typeinfo>,我用的code::blocks也要自己加头文件。

0 回复 有任何疑惑可以回复我~
#1

慕设计2525588 提问者

typeinfo也加了,编译时,没错但有四个警告,运行直接崩溃
2018-10-17 回复 有任何疑惑可以回复我~
#2

NodiSe 回复 慕设计2525588 提问者

没看到错误提示我也不知道哪里有问题,你可以看看我的代码,我贴在下面了
2018-10-17 回复 有任何疑惑可以回复我~
#3

慕设计2525588 提问者 回复 NodiSe

好的,其实我试过别人的代码,拷贝到vc6也一样
2018-10-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之多态篇
  • 参与学习       66236    人
  • 解答问题       314    个

本教程将带领大家体会面向对象三大特性中的多态特性

进入课程

我在cv6.0编译不能通过???

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信