讓說我定義某種容器A
的:`const_iterator`確實需要與`iterator`不同的類嗎?
struct A
{
iterator begin(){ return iterator(this,0); }
const iterator cbegin() const { return iterator(this, last());}
//...
};
假設現在我要宣佈iterator
(A部分):
struct A::iterator
{
iterator (A* ptr, size_t idx){};
//...
};
其中我會用這樣的:
const A a;
A::iterator it = a.cbegin();
這不起作用,因爲傳遞給iterator
構造函數的指針是非常量的。
理想的解決方案是類似的東西返回一個const對象的特定構造:
const A::iterator(const StringUtfInterface *p, size_t s); //Not valid
這是(明顯)無效在C++中。我想知道這個問題的解決方法是什麼?
我真的需要聲明/定義一個新的const_iterator類嗎? const
關鍵字不夠?
相關問題(但不相同):
迭代器,const迭代器和const_iterator之間的區別與常規指針('T *'),const指針('T * const')和指向const('const * ')。你需要所有三種。 –