2013-05-02 60 views
0

我正在嘗試的push_back一個新的自定義對象時出現以下錯誤:的Deque使用自定義類不能的push_back

prog7.cpp:66: error: no matching function for call to 
    ‘std::deque<Job, std::allocator<Job>  >::push_back(Job*)’ 
    /usr/include/c++/4.4/bits/stl_deque.h:1201: note: candidates 
    are: void std::deque<_Tp, _Alloc>::push_back(const _Tp&) 
    [with _Tp = Job, _Alloc = std::allocator<Job>] 

相關代碼如下:

deque<Job> jobs; 
jobs.push_back(new Job()); 

我在這裏幹什麼什麼了嗎?

+1

是的,你在使用'new'。你不應該在C++中使用'new'。它很少會做你的想法,也不會很優雅。 – 2013-05-02 22:20:08

回答

3

這樣說:

jobs.push_back(Job());   // copy from a default-initialized object 

或者:

jobs.emplace_back();   // direct-initialize a new object 
+0

謝謝!假設我想pop_front並將其分配給新的作業。這是如何完成的?我試過Job newJob = Job(jobs.pop_front());或Job newJob = jobs.pop_front();但這兩者都不工作 – socketman 2013-05-02 22:54:18

+0

@netorious:popping *刪除*項目。你可以說'jobs.front()'訪問*第一個項目,'push_front' /'emplace_front'在前面插入一個新項目。 – 2013-05-03 07:37:04