我现在做飞行棋游戏(仿照QQ里的)
现在设计了一个CRoad类,一个CPlane类.
这两个单独的类,
可是飞机要在道路上飞行,各种动作如果在CPlane实现,那要用到CRoad中的数据.
不知道怎么设计这些类,及他们之间的关系.
是否要需要其他的类

解决方案 »

  1.   

    to-->handsomerun(毛毛) 
    恩,不错,我早几个星期写的纸牌类感觉很奇怪,这次还是先搞清楚再写代码.
      

  2.   

    指针传递,设置一个函数接口。
    当需要用到另一个类时,一般传递this指针
      

  3.   

    怎麼做才是一個好的物件導向程式?
        當你在寫作一個程式的時候,等於是在將你對某些問題的答案加以具體化
        。而你的程式對於這些解答,能夠越直接的對應越好。    *假如你能將它看成一個單獨的想法,就把它做成一個class
        *假如你能將它看成一個單獨的實體,就把它做成某class的物件
        *若兩個class有共同的地方,就把共同的部份做成兩個class的
          superclass
        *若這個class是物件的container,將這class的共同行為做成
          template  不怎麼做才是一個好的物件導向程式?
        當你在定義一個class的時候,若你不是在寫一個有關數學的東西,如複數
        、矩陣等,或是一些低階的型別,如連結串列時:
        *不要使用整體變數
        *不要使用非成員函式
        *不要將物件資料公開
        *不要使用夥伴,除非是為了避免前三點
        *勿直接存取另一個物件的內部資料
        *不要在內部資料中加上型別的變數,應用虛擬函式來完成
        *不要使用行內展開函式
      

  4.   

    在Road.h中 include "Plane.h"
    然后定义了CPlane的实例,但是,当我在Plane.h中include "Road.h"时,本来想在Plane.h中定义CRoad的指针
    但是 出现 "possible infinite recursion"可能无限递归错误
      

  5.   

    CRoad::CRoad(int nPlayer)
    :m_Plane0(this,0,2),
     m_Plane1(this,1,2),
     m_Plane2(this,2,2),
     m_Plane3(this,3,2)通过了,不过通过构造函数传递有警告,不知道是否可以
    \Road.cpp(14) : warning C4355: 'this' : used in base member initializer list
    \Road.cpp(15) : warning C4355: 'this' : used in base member initializer list
    \Road.cpp(16) : warning C4355: 'this' : used in base member initializer list
    \Road.cpp(17) : warning C4355: 'this' : used in base member initializer list
      

  6.   

    把 include "Road.h"
    放到Plane.cpp中就可以了因为在plane中只需要CRoad的指针所以在头文件中不需要include "Road.h"但是在cpp文件中,因为要实现road的功能,所以把include "Road.h"
    放到cpp文件中