假设我定义了一种容器A
:
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对象的特定构造函数:
const A::iterator( const StringUtfInterface *p, size_t s); //Not valid
很明显,在C++中这是不合法的。我想知道解决这个问题的方法是什么?
我真的需要声明/定义一个新的const_iterator类吗?const
关键字不够用吗?
相关问题(但不完全相同):
T *
)、常量指针(T * const
)和指向常量的指针(T const *
)之间的区别相同。你需要这三种类型。 - n. m.