我不知道为什么下面的代码无法编译并显示错误:
“没有构造函数“ cb :: iterator :: iterator”的实例”与 参数列表参数类型为:((int,const cb)“
但是当我取消注释第二个构造函数版本时,代码可以正常编译!
为什么编译器将*this
视为const?
class cb
{
public:
class iterator
{
public:
iterator(int x, cb& c):cb_(c) { x_ = x; }
//iterator(int x, const cb& c) :cb_(c) { x_ = x; }
private:
int x_;
//cb a;
const cb& cb_;
};
iterator begin() const;
};
cb::iterator cb::begin() const
{
return iterator(1, *this);
}
答案 0 :(得分:0)
对于class X
,如果X的成员函数声明为this
,则X* const
指针的类型为const
。因此,构造在这种情况下,参数应为const
了。
这里是完整的解释:
'this' pointer in C++