您的位置:首页 > 其它

不同类如何共享同一个变量

2012-10-08 20:52 274 查看
我需要共享一个复杂的变量

基类:

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐