我不能用外部类的指针来调用内部类的构造函数

时间:2019-02-01 00:09:51

标签: inner-classes this-pointer const-method

我不知道为什么下面的代码无法编译并显示错误:

  

“没有构造函数“ 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);

}

1 个答案:

答案 0 :(得分:0)

对于class X,如果X的成员函数声明为this,则X* const指针的类型为const。因此,构造在这种情况下,参数应为const了。

这里是完整的解释:
'this' pointer in C++