关于 <vector>出现 cannot modify a const object
程序如下:
.h文件
using namespace std;
struct s_LoadCode
{
int Code;
char Sign[8];
bool Pass;
float CountOut;
};
template < class T >
AnsiString __fastcall CompYESNO(FunRecordData *p_tempFun, HitRecord (*temphit)[100],
int p_Groupnum, int p_TimeIn, vector< T > &SrcCode);
//--------------------
.cpp文件
template < class T >
AnsiString __fastcall myClass::CompYESNO(FunRecordData *p_tempFun, HitRecord (*temphit)[100],
int v_GroupNum, int v_TimeIn, vector< T > &SrcCode)
{
vector< T >::const_iterator p_CodePos;//搜查位置
p_CodePos = SrcCode.begin();
(*p_CodePos).Pass = false; //**** 这句出问题 ****
}
//---------------
调用
vector<s_LoadCode> LoadCode_GroupC;
CompYESNO(CScore, CHit, CGROUP, TimeIn, LoadCode_GroupC);
//*****************************************************************
(*p_CodePos).Pass = false; //这句出问题
cannot modify a const object;
请问是什么原因,如何解决?
问题点数:60、回复次数:5Top
1 楼zbc(修身养息,百战不怠)回复于 2003-06-02 16:18:31 得分 40
你的问题在于:
你所定义的迭代指针为常量,也就是无法对当前的元素进行修改,所以会出现cannot modify a const object; 这样的错误
另外,你使用迭代指针来访问元素中的pass成员时,不应该使用.符号,应该要使用->Top
2 楼lluunn007(书生)回复于 2003-06-02 16:20:21 得分 20
你定义的是常量类型,又修改他?Top
3 楼JacksonLiang(Jackson)回复于 2003-06-02 16:27:43 得分 0
to:zbc(咖啡小子)
我刚才用->访问成员,但编译不通过,不知是否还有地方要修改
可否再讲详细点,告诉我什么地方要修改Top
4 楼zbc(修身养息,百战不怠)回复于 2003-06-02 16:42:39 得分 0
你为结构s_LoadCode typedef一个类型,然后,使用重新定义的类型来声明向量看看
Top
5 楼JacksonLiang(Jackson)回复于 2003-06-02 16:46:58 得分 0
问题解决了。
vector< T >::const_iterator p_CodePos;这句出问题
谢谢zbc(咖啡小子) ,lluunn007() ,结贴
Top
相关问题
- c++ const object问题
- c++ const object问题
- ●●●●●请问const vector< int > *pvec, const vector< int > ivec的区别 性能差异●●●●●
- const?
- const
- typedef const vector<unsigned int>* (*pfunc)(int)请解释一下意思。
- 在vc6里面怎么不能写const vector<string> &items( pItems->second );
- 如何将Object强制转换为Vector?
- Vector
- 关于Object Pascal,const Bit1=$10000是什么意思?




