我有車對象的一個向量的元素,聲明爲刪除使用常量性
vector<Car> vCars
在我的功能之一,我需要擦除向量的第一個元素。聽起來很簡單吧?是拋出錯誤行:
vCars.erase(vCars.begin());
和錯誤:我理解一般擦除
no matching function for call to 'std::vector<Car>::erase(std::vector<Car>::const_iterator) const'
只需要一個迭代器的參數,而不是一個常量性。我一直在尋找解決方法或變通方法來解決這個錯誤,比如擦除刪除語句,但是從我所看到的情況來看,只有當我需要按位置移除時,它纔會按值刪除一個元素,只是在第一個位置的元素! (我知道這是不是一個向量不錯的表現明智,但我需要使用這個矢量)
編輯:要澄清的情況下,呼叫被其中所包含的功能如下:
/// Removes the Car at the front of the garage without returning the instance.
void Garage::pop() const {
if (!empty()) {
vCars.erase(vCars.begin());
}
}
編輯:我現在看到我出錯了。有很多const的方法,我只是盲目地做出了pop()const方法!一旦我刪除了const,問題就解決了。感謝您指點我正確的方向!
如果以下任何答案解決了您的問題,我建議您接受其中之一。這是說「謝謝」的SO方式。 :) – Xeo