首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

不同类怎么共享同一个变量

2012-05-10 
不同类如何共享同一个变量我需要共享一个复杂的变量基类:class A{static struct Map{//.....多个变量}map[

不同类如何共享同一个变量
我需要共享一个复杂的变量

基类:

class A  
{
  static struct Map{  
  //.....多个变量
  }map[4][4]; //需要共享这个


如何在其子类中共享它。




我试过了简单的变量类型如:int ,在基类中初始化,在子类中是能共享的,但这个复杂的怎么弄?

[解决办法]
如果一定要把Map定义在CAnimal内部,那就这样写:

C/C++ code
class CAnimal{public:    static struct Map    {        int a;        string type;        bool on;    }map[400][400];    static void setMap();};CAnimal::Map CAnimal::map[400][400];void CAnimal::setMap(){    for (int i=0;i<400;++i)        for (int j=0;j<400;++j)        {            map[i][j].a=0;            map[i][j].type="";            map[i][j].on=true;        }}int main(){    CAnimal::setMap();    return 0;}
[解决办法]
楼主,其实你这个问题没有描述的很清楚,你的意思是一个父类A,之后两个子类B和C,B和C共享父类的一个成员吗 ?

在不知道你意思的情况下我有这个建议,两种方法完成共享:
1.利用组合而非继承,B类和C类存同一个A的指针,完成共享
2.3楼正解了,单件模式,A类可以类似的这样写,B和C只需要在使用时调用A::Instance()就可以了
class A 
{
public:
static A *Instance(){
if (NULL == m_pA) {
m_pA = new A;
}
return m_pA;
}
private:
A(){m_pA = NULL;}
~A();
private:
static A *m_pA;
}

热点排行