我有一类商品和一个返回它的尺寸的功能。 我有运算符==,它获取类类型的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引用传递或者是否有一种方法来告诉大小获取类类型这是常量??? 谢谢你的帮助。
答案 0 :(得分:3)
您很可能忘记将size
成员函数限定为const:size_t size() const { return /* compute/return size */; }
另一种方法是,您确实在某处({1}}将错误CardDeck
拼写错误(来自错误消息的拼写错误)。