无法用外部类的this指针调用内部类的构造函数

问题描述 投票:0回答:1

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

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

}
c++ inner-classes const-correctness this-pointer function-qualifier
1个回答
0
投票

对于

class X
,如果 X 的成员函数声明为
this
,则
X* const
指针的类型为
const
。所以这种情况下构造函数的参数也应该是
const

这是完整的解释:
C++ 中的“this”指针

© www.soinside.com 2019 - 2024. All rights reserved.