2013-12-09 45 views
0
在方法

複製本地列表,我有一個本地variabile的C++列表:在成員列表

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-> 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個元素,但 「這個 - >球體」 零元!

+0

'mem =或;'應該根據您的標題來判斷。如果你真的想要追加列表,可以使用'insert'。 – chris

+3

'或'是每2.12/2('||'的替代拼寫)的保留標識符。 – Casey

+0

同樣的行爲也改變名稱:( – volperossa

回答

1

爲什麼不使用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; 

沒有看到更多的代碼,這將是哈rd告訴你爲什麼它是空的。

差點忘了(凱西與提醒我):or實際上是一個保留字,所以你要爲其他變量命名你的變量。

+0

嘗試,但行爲相同..我添加了一些問題的代碼行.. – volperossa

+0

@volperossa'calcola_proiezione'的聲明和實現是什麼? –

+0

這不是問題,我也試試這個用相同的結果: '// calcola_proiezione(ORA,&PR,ES,media_desiderata,valore_lode); \t的std ::列表測試; \t proiezione NUOVA; \t test.push_back(NUOVA); \t爲(STD: :list :: iterator it = test.begin(); it!= test.end(); ++ it) \t \t this-> orb.push_back(* it);' 結果:orb.size()= 0; test.size()= 1 我認爲問題在於orb的聲明中;我應該初始化它爲任何值? – volperossa