不同类如何共享同一个变量
2012-10-08 20:52
274 查看
我需要共享一个复杂的变量
基类:
class A
{
static struct Map{
//.....多个变量
}map[4][4]; //需要共享这个
}
如何在其子类中共享它。
我试过了简单的变量类型如:int ,在基类中初始化,在子类中是能共享的,但这个复杂的怎么弄?
------解决方案--------------------------------------------------------
如果一定要把Map定义在CAnimal内部,那就这样写:
C/C++ code
基类:
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; }
相关文章推荐
- 在一个程序中需要用到全局变量(在多个class之间共享数据),请问如何定义具有这种功能的变量?或者是否有其他的方法解决多个class之间的数据共享(尽量简单实现)。 首先应该明确 Java中没有全局变
- 在C#中有一个double型的变量,比如10321.5,比如122235401.21644,作为货币的值如何按各个不同国家的习惯来输出。比如美国用$10,321.50和$122,235,401.22而
- python中如何在不同文件间共享全局变量
- java中如何理解多个对象共享同一个静态成员变量(多个实例的static变量会共享同一块内存区域)
- Java里如何实现一个方法在不同情况下“返回”不同的类型变量?
- angular如何实现不同模块的变量共享
- [InstallShield]如何在不同的Script文件之间共享全局变量
- python中如何在不同文件间共享全局变量
- 如何让一个变量存储多个不同的状态
- dede list 2个不同栏目如何调用同一个栏目文章,类似副栏目?
- 原生如何检测变量是否是一个数组的几种方法
- 不同网段共享一个打印机的实践
- 进程间同步(互斥) 以及 同一DLL的不同进程copy共享全局变量
- 几台电脑同时使用一个无线路由器上网,外部ip相同,各个电脑内部ip不同,路由器如何区分某个数据包是发给某个电脑的?
- (转)如何让一个动态链接库文件debug和release编译的时候生成不同的文件名
- 服务器放在不同省份的IDC机房,数据如何同步?一个域名如何动态解析到不同IP的服务器
- 如何设计一个高效算法从N个正整数中,随机选取n个不同的随机数 n<=N
- 在同一个form表单里有2个按钮,如何各自提交到不同的action里面去。
- php中如何把一个数字字符串作为一个变量
- 同一进程中的不同线程,他们读取到同个共享变量的值为什么会不一致