不是有意想把标题取这么怪...
大概情况是这样的
我有一个struct,里面包含一个cstring的成员,每次在struct赋值完毕后,将其push_back进vector里但当我用vector[i]的方法调struct的时候,发现其cstring的值不对,请教是为何程序差不多是这样
struct st
{
int n;
CString strC
};st st1;vector<st> vt1;
赋值时
for(i=0;i<N;i++)
{
st1.n = 某int变量
st1.strC = 某CString变量
vt1.push_back(st1);
}使用时
for(j=0;j<N;j++)
{
st st1 = vt[j];
int a = st1.strC.n;
CString b = st1.strC;
}
这里时候,b的值就有问题了,不过int的值却是正确的
大概情况是这样的
我有一个struct,里面包含一个cstring的成员,每次在struct赋值完毕后,将其push_back进vector里但当我用vector[i]的方法调struct的时候,发现其cstring的值不对,请教是为何程序差不多是这样
struct st
{
int n;
CString strC
};st st1;vector<st> vt1;
赋值时
for(i=0;i<N;i++)
{
st1.n = 某int变量
st1.strC = 某CString变量
vt1.push_back(st1);
}使用时
for(j=0;j<N;j++)
{
st st1 = vt[j];
int a = st1.strC.n;
CString b = st1.strC;
}
这里时候,b的值就有问题了,不过int的值却是正确的
赋值时
for(i=0;i<N;i++)
{
st st1;
st1.n = 某int变量
st1.strC = 某CString变量
vt1.push_back(st1);
}这样
for(j=0;j<N;j++)
{
st st1 = vt[j];//st这个赋值只是一个浅拷贝,所以st1.strC可能会没有值了
int a = st1.strC.n;
CString b = st1.strC;
}//建议改为如下vector<st>::iterator itr;
for (itr= vt.begin(); itr!= vt.end(); itr++)
{
int a = (*itr).n;
CString b = (*itr).strC;
}