我的代码这么写的:
在.h文件中
#include "Afxtempl.h"
typedef struct _PER_IO_CONTEXT
{
_PER_IO_CONTEXT* curaddr;
_PER_IO_CONTEXT* pNext;
CHAR sID[24];
int operator == (PPER_IO_CONTEXT right) //重载"=="符号
{
if(strcmp(sID,right->sID)==0) return 1;
return 0;
}}*PPER_IO_CONTEXT;
class CModel
{
CList<PPER_IO_CONTEXT,PPER_IO_CONTEXT*> m_lpConnectionList;
CList<PPER_IO_CONTEXT,PPER_IO_CONTEXT*> m_lpIoLookasideList;
}结果rebuild的结果有400多个error,全是下面两种error:
c:\program files\microsoft visual studio\vc98\mfc\include\afxtempl.h(51) : error C2894: templates cannot be declared to have 'C' linkage
c:\program files\microsoft visual studio\vc98\mfc\include\afxtempl.h(134) : error C2733: second C linkage of overloaded function 'ConstructElements' not allowed
还有一个
BSCMAKE: error BK1506 : cannot open file '.\Debug\GPRS服务器.sbr': No such file or directory我是不是有哪里的头文件加错了.或者设置有问题呢?
请各位大侠帮我!
在.h文件中
#include "Afxtempl.h"
typedef struct _PER_IO_CONTEXT
{
_PER_IO_CONTEXT* curaddr;
_PER_IO_CONTEXT* pNext;
CHAR sID[24];
int operator == (PPER_IO_CONTEXT right) //重载"=="符号
{
if(strcmp(sID,right->sID)==0) return 1;
return 0;
}}*PPER_IO_CONTEXT;
class CModel
{
CList<PPER_IO_CONTEXT,PPER_IO_CONTEXT*> m_lpConnectionList;
CList<PPER_IO_CONTEXT,PPER_IO_CONTEXT*> m_lpIoLookasideList;
}结果rebuild的结果有400多个error,全是下面两种error:
c:\program files\microsoft visual studio\vc98\mfc\include\afxtempl.h(51) : error C2894: templates cannot be declared to have 'C' linkage
c:\program files\microsoft visual studio\vc98\mfc\include\afxtempl.h(134) : error C2733: second C linkage of overloaded function 'ConstructElements' not allowed
还有一个
BSCMAKE: error BK1506 : cannot open file '.\Debug\GPRS服务器.sbr': No such file or directory我是不是有哪里的头文件加错了.或者设置有问题呢?
请各位大侠帮我!
=============
你看到这个没有??
将“GPRS服务器.sbr”文件拷贝到Debug文件夹下。
定义不对. 存储类型跟操作类型不一致:要么都用 对象,要么都用指针:
CList<PPER_IO_CONTEXT,PPER_IO_CONTEXT&> m_lpConnectionList;
或者:
CList<PPER_IO_CONTEXT*,PPER_IO_CONTEXT*> m_lpConnectionList;
-------------
CList<MYTYPE,MYTYPE&> myList;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_clist.asp
typedef struct _PER_IO_CONTEXT
{
_PER_IO_CONTEXT* curaddr;
_PER_IO_CONTEXT* pNext;
CHAR sID[24];
int operator == (PPER_IO_CONTEXT right) //重载"=="符号
{
if(strcmp(sID,right->sID)==0) return 1;
return 0;
}}*PPER_IO_CONTEXT;
class CModel
{
CList<PPER_IO_CONTEXT,PPER_IO_CONTEXT&> m_lpConnectionList;
CList<PPER_IO_CONTEXT,PPER_IO_CONTEXT&> m_lpIoLookasideList;
}
现在的error少了些,不过下面三个error一起重复出现了三次
g:\完成端口\clist\iomodel.h(119) : error C2061: syntax error : identifier 'PPER_IO_CONTEXT'
g:\完成端口\clist\iomodel.h(120) : error C2805: binary 'operator ==' has too few parameters
g:\完成端口\clist\iomodel.h(120) : error C2333: '==' : error in function declaration; skipping function body
好象都是跟struct定义里面重载"=="符号那几句相关的.那几句写错了吗?应该怎么写才对呀?
还有顺便问一下,如果clist里面的对象不需要比较的话可不可以不重载==符号?
还有我的PPER_IO_CONTEXT本身就是指针型的变量,
CList<PPER_IO_CONTEXT,PPER_IO_CONTEXT&> m_lpConnectionList;
第二个参数也要用&吗?
请大侠的都来帮我!
{
_PER_IO_CONTEXT* curaddr;
_PER_IO_CONTEXT* pNext;
CHAR sID[24];
int operator == ( _PER_IO_CONTEXT *right) //重载"=="符号
{
if(strcmp(sID,right->sID)==0) return 1;
return 0;
}}*PPER_IO_CONTEXT;
class CModel
{
CList<PPER_IO_CONTEXT,PPER_IO_CONTEXT&> m_lpConnectionList;
CList<PPER_IO_CONTEXT,PPER_IO_CONTEXT&> m_lpIoLookasideList;
};
这样定义以后就没有错误了.
typedef struct _PER_IO_CONTEXT
{
_PER_IO_CONTEXT* curaddr;
_PER_IO_CONTEXT* pNext;
CHAR sID[24];
int operator == ( _PER_IO_CONTEXT right) //重载"=="符号
{
if(strcmp(sID,right.sID)==0) return 1;
return 0;
}}*PPER_IO_CONTEXT;
class CModel
{
CList<PPER_IO_CONTEXT,PPER_IO_CONTEXT&> m_lpConnectionList;
CList<PPER_IO_CONTEXT,PPER_IO_CONTEXT&> m_lpIoLookasideList;
};
typedef struct _PER_IO_CONTEXT
{
_PER_IO_CONTEXT* curaddr;
_PER_IO_CONTEXT* pNext;
CHAR sID[24];
int operator == ( _PER_IO_CONTEXT right) //重载"=="符号
{
if(strcmp(sID,right.sID)==0) return 1;
return 0;
}}*PPER_IO_CONTEXT;
class CModel
{
CList<_PER_IO_CONTEXT,_PER_IO_CONTEXT> m_lpConnectionList;
CList<_PER_IO_CONTEXT,_PER_IO_CONTEXT> m_lpIoLookasideList;
};
我是有名的水王,可到处遭到版主封杀,网络之大竟无一块版面让俺痛快一灌,发帖还能拿奖?俺倒是曾经梦见过。
我喜欢跟大家分享,好文章,好资源……。有人喜欢,我已经很开心,转载也有奖金?真是从来没见过。现金大奖:
一等奖(一名):现金1000元
二等奖(一名):现金500元
三等奖(一名):现金300元
优秀奖(7名):现金100元
你没听说过、没见过、认为不可能的,今天统统推翻!上Kman论坛(http://www.kman.com.cn/kmanforum/forum/index),你的发帖够精彩,回帖的人够多,1000元就是你的!!
{
_PER_IO_CONTEXT* curaddr;
_PER_IO_CONTEXT* pNext;
CHAR sID[24];
int operator == ( _PER_IO_CONTEXT right) //重载"=="符号
{
if(strcmp(sID,right.sID)==0) return 1;
return 0;
}}*PPER_IO_CONTEXT;
class CModel
{
CList<_PER_IO_CONTEXT,_PER_IO_CONTEXT> m_lpConnectionList;
CList<_PER_IO_CONTEXT,_PER_IO_CONTEXT> m_lpIoLookasideList;
};
CList模板中第二个参数的类型要和运算符重载函数中参数的类型一致.
{
_PER_IO_CONTEXT* curaddr;
_PER_IO_CONTEXT* pNext;
CHAR sID[24];
int operator == ( _PER_IO_CONTEXT &right) //重载"=="符号
{
if(strcmp(sID,right.sID)==0) return 1;
return 0;
}}*PPER_IO_CONTEXT;
class CModel
{
CList<_PER_IO_CONTEXT,_PER_IO_CONTEXT&> m_lpConnectionList;
CList<_PER_IO_CONTEXT,_PER_IO_CONTEXT&> m_lpIoLookasideList;
};
CList模板中第二个参数的类型要和运算符重载函数中参数的类型一致.
我的CList中的第二个参数定义的PPER_IO_CONTEXT,指针型的,所以我在重载运算符的时候定义的right也是PPER_IO_CONTEXT型。这样应该没什么问题吧?
我那些error到底是怎么回事呀?大家帮我看看吧!
typedef struct _PER_IO_CONTEXT
{
_PER_IO_CONTEXT* curaddr;
_PER_IO_CONTEXT* pNext;
CHAR sID[24];
int operator == ( _PER_IO_CONTEXT *right) //重载"=="符号
{
if(strcmp(sID,right->sID)==0) return 1;
return 0;
}}*PPER_IO_CONTEXT;
class CModel
{
CList<_PER_IO_CONTEXT,_PER_IO_CONTEXT*> m_lpConnectionList;
CList<_PER_IO_CONTEXT,_PER_IO_CONTEXT*> m_lpIoLookasideList;
};