有没有办法把它传递给const?

时间:2016-01-10 20:29:47

标签: c++ class const this

我有一类商品一个返回它的尺寸的功能。 我有运算符==,它获取类类型的2个const参数,并返回 item1.size()== item2.size()的结果。 size函数是非参数函数,只需隐藏此参数即可。

问题是当我尝试在类的const引用上使用size时,它会给我一个错误:

'function' : cannot convert 'this' pointer from 'type1' to 'type2'

The compiler could not convert the this pointer from type1to type2.

This error can be caused by invoking a non-const member function on a const object. Possible resolutions:

    Remove the const from the object declaration.

    Add const to the member function.

这段代码就像我的问题一样:

bool operator==(const CardDeck& deck1, const CardDeck& deck2){
    if (deck1.size() != deck2.size()) {
        return false;
    }
    //...
}

错误:

 'unsigned int CardDeck::size(void)' : cannot convert 'this' pointer from 'const CardDeck' to 'Cardeck&'

如果我希望该大小将对象作为const,我必须使它成为朋友并将对象作为const引用传递或者是否有一种方法来告诉大小获取类类型这是常量??? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

您很可能忘记将size成员函数限定为const:size_t size() const { return /* compute/return size */; }

另一种方法是,您确实在某处({1}}将错误CardDeck拼写错误(来自错误消息的拼写错误)。