从vc++6.0转到vs2005的问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 14:35:01
1、struct LC_INF{
LPVOID lpMapAddress;
CString RamName;
int mn_sum,kr_sum;
int GroupSum;
}uPLCINF[MAXNUM];
定义一个结构体,用于保存相关信息。里面的内容需多次调用,所以定义对象为uPLCINF[MAXNUM];MAXNUM已在头文件中定义过。在vc++6.0中可以,但在vs2005下报错 error C2228: “.mn_sum”的左边必须有类/结构/联合。怎么改啊??
2、uT_ReqFrame定义为一个类的对象
uT_ReqFrame* pFrame;
pFrame = (uT_ReqFrame*)pOutBuff;
用pFrame 为类成员分配的数据 可不可以通过pOutBuff传递给另外一个类里面去?
1、情况并不是mn_sum一个成员变量引用时报错 是所有的引用都会报同一个错误。
我就是不明白这样定义错在哪了?应该不会是像你说的CString没有定义,类里面也有整型数据啊。
难道是类的定义就不能带型参,往形参传数吗?MAXNUM在调用中为我传入的参数。

1. 如果MAXNUM有定义的话,应该是LPVOID或者CString没有定义,怀疑是后者,在vs2005对应的MSDN中查找相关定义的头文件。

2. 如果是相同的类类型,肯定是没问题的,如果不同相同的类类型,则跟类的内存布局有关系,可能可以也可能不行。但是如果使用了dll并且编译选项不太一样,或者是编译器不同,则可能也不行。总之,在c++里对类成员采用赋值方法比采用复制内存的方法要安全。

所有的引用都报错,不也是这个道理么,你的类定义不对。找到CString的头文件加进去。如果这个类定义是对的话,那错误就在类定义之前的地方,你的代码没贴出来。