0
因此,對於學校的任務,我們必須將Linear Hashing實現爲一個類,該類從包含指向塊列表類的唯一指針的向量派生。擴展向量並調用push_back函數
現在,無論何時我嘗試使用push_back添加元素,我都會得到:No matching member function for call to 'push_back'
。但是,當我嘗試運行this->size()
它確實有效。
我的代碼:
template <class Key, class Data>
class Linhash : public std::vector<std::unique_ptr<Blocklist<Key, Data>>> {
public:
Linhash<Key, Data>(Disk<Block<Key, Data>>* disk)
: std::vector<std::unique_ptr<Blocklist<Key, Data>>>() {
this->disk = disk;
}
void add(Key k, Data d);
};
template <class Key, class Data>
void Linhash<Key, Data>::add(Key k, Data d) {
// This works
this->size();
// This doesn't work
Blocklist<Key, Data> bl(this->disk);
this->push_back(bl);
}
我的選擇將是,我推錯了對象到的push_back功能(它有什麼做的unique_ptr的),但我不知道。此外,我們並沒有在我們的課程中學習unique_ptr,而是在執行算法時拋出它,這讓我很難理解這一點。
你有一種類型的矢量('標準::的unique_ptr <阻止列表<...>>'),但你想'push_back'不同類型的值( 'Blocklist <...>') –
您是否試圖將該列表包裝在唯一的指針中? – ChiefTwoPencils
因此,我將不得不單獨創建一個unique_ptr對象,編輯:好吧,imma試試,編輯#2:工作,非常感謝你! –