class my_bool {
private:
bool value;
public:
my_bool(bool value) : value(value) {}
operator bool();
friend my_bool operator==(const my_bool & instance_1, const my_bool & instance_2);
};
void main(){
my_bool a = true;
bool b = false;
if(a == b){
// do something
}
}
编译器说比较运算符不明确。编译器无法决定a
是否应转换为bool
或b
应转换为my_bool
。有没有办法解决这个问题而不写下3个重载(my_bool
,my_bool
),(bool
,my_bool
),(my_bool
,{ {1}})相同的比较运算符?
答案 0 :(得分:1)
删除第二个参数上的const
qualifer以消除歧义:
friend my_bool operator==(const my_bool & instance_1, my_bool & instance_2);
或使用显式
explicit operator bool();
或使用不同的==
重载更有意义:
class my_bool
{
private:
bool value;
public:
my_bool(bool value) : value(value) {}
operator bool() { return value; }
bool operator == (bool val)
{
return this->value == val;
}
};
答案 1 :(得分:0)
您可以明确将Catalog.find({where:
{id: itemId},
include: {
model: models.ProductCategory,
where: {
language_id: {$col: 'Catalog.language_id'}
}
}
})
转换为a
bool