2012-07-30 44 views
0

我只是有一個向量像我應該如何改變它了點成具有自己的價值

vector<User*> users; 

我知道這是不是一個很好的編程風格。

現在的矢量的矢量我有一個函數

vector<User> getAllUser(void) 
{ 
} 

我曾試圖在

vector<User> getAllUser(void) 
{ 
    vector<User> result; 
    for (vector<User*>::iterator it = users.begin(); it != users.end(); it++) 
    { 
     result.push_back(**it); 
    } 
    return result; 
} 

但它沒有奏效。

有人可以幫我嗎?非常感謝你。我只是一個初學者到STL

+0

什麼是用戶界面的聲明? – 2012-07-30 16:09:33

+4

'result.push_back'而不是'result.push_bach'。另外,請詳細說明「它沒有工作」 – Etan 2012-07-30 16:11:05

+0

請嘗試'push_back'。另外,請接受有用的答案。 – 2012-07-30 16:11:18

回答

3

你的代碼應該工作,但你犯了一個錯字:

result.push_bach(**it); 

push_bach不是std::vector聲明的功能,所以我假定這就是錯誤所在。我建議你得到一個體面的編譯器,它應該立即將這個錯誤指向你,而不必通過計算器。

要修復,使用正確的方法名稱,而不是push_back

result.push_back(**it); 
+0

事實上,它是'push_back',所以很抱歉我的錯誤拼寫。 – lpy 2012-07-31 00:11:23

1

如果必須使用指針,用一個漂亮的std::shared_ptr<User>只要你會用User*,也不要混搭堆和棧分配對象。

如果你並不真的需要到處使用指針,確保User有一個拷貝構造函數defind(例如,User::User(const User& rhs) { /* ... */ }

相關問題