梧桐下的四叶草 2015-06-05 03:37 采纳率: 33.3%
浏览 2128
已采纳

如何使用类指针数组实现以下的代码??

编写一个游戏平台。功能描述:
程序启动后,显示游戏列表(至少有三个游戏)
游戏1
游戏2
游戏3
用户选择其中一个游戏后,进入该游戏。游戏结束后,回到游戏列表。游戏列表按照游戏访问量动态排序。
定义游戏1类、游戏2、游戏3类,公有继承自CGame。游戏类自行设计,必须提供void start()作为游戏入口。
上面的要求如何实现???

 #include<iostream>
#include<algorithm>
using namespace std;
class Game
{
private:
    char* name;
    int visitCount;
public:
    Game()
    {
        visitCount = 0;
    }
    int GetVisitCount()
    {
        return visitCount;
    }
    void addvisitCount();
     void ShowName();
    virtual void start() = 0;
};
void Game::ShowName()
{
    cout << name << endl;
}
class GGame1:public Game
{
private:
public:
    virtual void start();
};
void GGame1::start()
{
    cout << "欢迎进入游戏" << endl;
}
class GGame2:public Game
{
private:
public:
    virtual void start();
};
void GGame2::start()
{
    cout << "欢迎进入游戏" << endl;
}
class GGame3:public Game
{
private:
public:
    virtual void start();
};
void GGame3::start()
{
    cout << "欢迎进入游戏" << endl;
}
bool cmp(Game& a,Game& b)
{
    return a.GetVisitCount() > b.GetVisitCount();
}
void menu(Game& gaems) // 显示游戏列表
{
    for (int i = 0; i < 3; i++) (gaems).ShowName();
}
int main()
{
    Game *games[3];
    games[0] = new GGame1;//为什么可以用基类指针数组来new一个派生类??
    games[1] = new GGame2;
    games[2] = new GGame3;
    do
    {
        /*sort(games,games+3,cmp);  将游戏列表按访问量排序*/
        //如何实现类指针数组的排序??
        menu(games);
        int choice;
        cin >> choice;
        // 用户输入选择
        if (choice >= 0 && choice <= 2)
        {
            int i = choice;
            (*games)[i].start();
        }
        else
        {
            break; // 退出系统
        }
    } while (true);
}

  • 写回答

2条回答 默认 最新

  • 这波lucio来全学了 腾讯前端高级开发工程师 2015-06-05 17:33
    关注

    对不起,我逗比了,基类指针指向派生类可以但是不能访问派生类自己的函数。
    改的话,派生类不用再virtual了,(有应该也没错),直接void start()就好,然后还是按我上面说的改就好了。
    然后那个基类不一定要是纯虚函数

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案
  • ¥50 winform中使用edge的Kiosk模式
  • ¥15 关于#python#的问题:功能监听网页
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化