在一个方法中,我有一个局部可变
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);
但不起作用!
这个->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)
}
在调试模式下,我有25个元素的"ora",但"this->orb"没有元素!
为什么不使用std::copy
算法?
std::copy(tList.begin(), tList.end(), std::back_inserter(mem));
或者使用副本交换:
void MyClass::func(std::list<proiezione> tList)
{
mem.swap(tList);
}
或者使用assign
成员:
mem.assign(tList.begin(), tList.end());
或者使用复制分配运算符:
mem = tList;
如果没有看到更多的代码,就很难告诉你为什么它是空的。
差点忘了(感谢Casey提醒我):or
实际上是一个保留字,所以你会想用其他东西来命名你的变量。