哪里錯了?
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
/**
?* 定義移動類:Movable
?* 純虛函數(shù):move
?*/
class Movable
{
public:
? ? virtual void move()=0;
};
/**
?* 定義公交車類:Bus
?* 公有繼承移動類
?* 特有方法carry
?*/
class Bus : public Movable
{
public:
? ? virtual void move()
? ? {
? ? ? ? cout << "Bus -- move" << endl;
? ? }
? ??
? ? void carry()
? ? {
? ? ? ? cout << "Bus -- carry" << endl;
? ? }
};
/**
?* 定義坦克類:Tank
?* 公有繼承移動類
?* 特有方法fire
?*/
class Tank :public Movable
{
public:
? ? virtual void move()
? ? {
? ? ? ? cout << "Tank -- move" << endl;
? ? }
? ? void fire()
? ? {
? ? ? ? cout << "Tank -- fire" << endl;
? ? }
};
/**
?* 定義函數(shù)doSomething含參數(shù)
?* 使用dynamic_cast轉(zhuǎn)換類型
?*/
void doSomething(Movable *obj)
{
? ? obj->move();
? ? if(typeid(*obj)==type(Bus))
? ? {
? ? ? ?Bus *bus =dynamic_cast<Bus *>(obj);
? ? ? ? bus->carry();
? ? }
? ? if(typeid(*obj)==type(Tank))
? ? {
? ? ? ? Tank *tank =dynamic_cast<Tank *>(obj);
? ? ? ? tank->fire();
? ? }
}
int main(void)
{
? ? Bus b;
? ? Tank t;
? ? doSomething(&b);
? ? doSomething(&t);
? ? return 0;
}
2017-11-17
答案代碼沒加 但是我電腦上也能通過 還是編譯器太坑了
2017-03-27
厲害了{(lán)華生等我},我也是想過缺少頭文件,但是不知道typeid屬于哪個頭文件的,后來一想,估計已經(jīng)有人出現(xiàn)這個問題,于是看到你得答案,確實給力,贊一個。
2016-11-14
少定義一個頭文件,#include<typeinfo>