如图,我试图构建一个基于OGRE的游戏,但是OGRE的实例里面都是通过一个主程序文件来实现的,这让我觉得很难受我想把功能分开来,让 cDisplay 类来负责OGRE的显示部分,CSound 类来负责声音播放,CGame类来负责游戏逻辑现在问题来了,如果我按照图片上这样划分的话,我怎么做到3个类之间的交互?比如现在玩家输入了账号按了确定,应该告诉CGame类玩家输入了什么账号、密码,并且通知CGame去服务器验证密码验证成功的话再由CGame类告诉CDisplay类已经验证成功了,显示主城吧!显示主城之后CDisplay告诉CSound该播放背景音乐了好复杂,我该如何让这3个类之间交互数据呢?

解决方案 »

  1.   

    这样!
    Display.h
    class cDisplay
    {
    ...
    };
    extern cDisplay m_displaycGame.cpp#include "Display.h"
    cDisplay m_display;
    //这样则cGame所有函数都能调用m_display了
    同法:
    Display.cpp中加入
    #include "cGame.h"
    cGame m_game;
    则相互引用的,可以!
      

  2.   

    非常感谢pjl110提供方法,我想问下如果我按照这个方法,在cGame里使用cDisplay m_display;访问cDisplay
    那么他会重新执行一遍cDisplay的构造函数吗?如果会的话,好像会出错吧