在方法中,我有一个局部变量
std::list<proiezione> ora;
和相同类型的成员变量
std::list<proiezione> orb;
在我的方法中我有
for (std::list<proiezione>::iterator it = ora.begin(); it != ora.end(); ++it)
this->orb.push_back(*it);
但不起作用!
this-&gt; mem是空的!为什么呢?
精确地:
class CMFCApplication4Doc : public CDocument
{
public:
std::map<CString, Esame> esami;
INT valore_lode;
proiezione pr;
std::list<proiezione> orb;
void get_proiezione(FLOAT media_desiderata);
}
void CMFCApplication4Doc::get_proiezione(FLOAT media_desiderata)
{
std::list<proiezione> ora;
std::vector<CString> v_proiezione;
CString appoggio;
std::map<CString, Esame> es = esami;
calcola_proiezione(ora,&pr, es, media_desiderata,valore_lode);
for (std::list<proiezione>::iterator it = ora.begin(); it != ora.end(); ++it)
this->orb.push_back(*it);
ecc ecc (I don't touch orb anymore)
}
在调试模式下,我有“ora”有25个元素,但是“this-&gt; orb”有零元素!
答案 0 :(得分:1)
为什么不使用std::copy
算法?
std::copy(tList.begin(), tList.end(), std::back_inserter(mem));
或使用copy-swap:
void MyClass::func(std::list<proiezione> tList)
{
mem.swap(tList);
}
或使用assign
成员:
mem.assign(tList.begin(), tList.end());
或使用复制赋值运算符:
mem = tList;
如果没有看到更多代码,就很难告诉你为什么它是空的。
几乎忘记了(感谢凯西提醒我):or
实际上是一个保留字,所以你要将你的变量命名为别的。