3,882
社区成员
发帖
与我相关
我的任务
分享#include<iostream>
#include<string>
using namespace std;
class Platform {
public:
virtual string sysinfo() = 0;
virtual ~Platform() {}
};
class MacOS : public Platform{
public:
string sysinfo() {
return "MacOS owo";
}
~Platform() {}
};
class Windows : public Platform{
public:
string sysinfo() {
return "Windows T_T";
}
~Platform() {}
};
class Game {
protected:
Platform *platform_;
public:
// Game() {} // 这句没有的话不能编译啊
virtual string play() = 0;
Game(Platform *backend) { platform_ = backend;}
virtual ~Game() {
delete platform_;
}
};
class Diablo : public Game {
public:
Diablo(Platform *backend) { platform_ = backend; }
string play(){
string str = "Playing Diablo on ";
str = str + platform_->sysinfo();
return str;
}
virtual ~Diablo() {delete platform_;}
};
class Warcraft : public Game{
public:
Warcraft(Platform *backend) { platform_ = backend; }
string play(){
string str = "Playing Warcraft on ";
str = str + platform_->sysinfo();
return str;
}
virtual ~Warcraft() {delete platform_;}
};
为什么基类中没有 Game() { } 的话 ,不能编译啊?