|
本帖最后由 AUTORs哈 于 2013-12-22 20:14 编辑
MFC中两个类A,B定义了相同名称的类C变量,没有用extern和static,为什么感觉它们是一个变量,
因为在A对象中改变C对象的成员变量, 在B对象的C对象的成员变量也是同样的变化。
不理解,求解释,这两个类中的C变量不应该是两个变量吗?
A就是ThreadData,B就是Threaddraw,C是DDC1G(加粗显示部分),
代码如下:
threaddata.h头文件如下,A就是ThreadData
#ifndef ThreadData_H_
#define ThreadData_H_
#include "workerthread.h"
#include <iostream>
#include <fstream>
//using namespace std;
class ThreadData:public CWorkerThread
{
public:
ThreadData();
~ThreadData();
DDC1G * ddc1g;
private:
bool reset;
void resetpage();
int rampage,pagenum,pagesize;
};
#endif
。。。。。。分割线。。。。。。。。。。。。。。
threaddraw.h头文件如下,B就是Threaddraw
#ifndef ThreadDraw_H_
#define ThreadDraw_H_
#include "ddc.h"
#include "workerthread.h"
#include <math.h>
class ThreadDraw:public CWorkerThread
{
public:
ThreadDraw();
~ThreadDraw();
DDC1G * ddc1g;
...
private:
int drawpage,pagenum,pagesize;
UINT spectdata[270000];
UINT spectdata2[270000];
...
};
#endif
。。。。。。分割线。。。。。。。。。。。。。。
DDC1G.h代码如下,C是DDC1G
class DDC1G:public DDC
{
public:
int readpage;
UINT spectdata[130000]
...
}
。。。。。。分割线。。。。。。。。。。。。。。
在threaddata.cpp中用到ddc1g的主要是以下语句
memcpy( ddc1g->spectdata+(ddc1g->readpage)*pagesize,ddc1g->pUIBar2+(ddc1g->readpage)*pagesize,pagesize*4);
在threaddraw.cpp中用到ddc1g的主要是以下语句
memcpy(spectdata,ddc1g->spectdata,65544*4);
问题是,在threaddata.cpp中改变了ddc1g->spectdata的值,threaddraw.cpp中的spectdata读到了相同的数据 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|