Пусть следующий код:Почему я не могу использовать оператор трансляции в сравнении?
#include <string>
#include <iostream>
using namespace std;
struct A
{
operator int()
{
return 123;
}
operator string()
{
return string("abc");
}
};
void main()
{
A a;
cout<<(a==123)<<endl;
//cout<<(a==string("abc"))<<endl;
}
Первый, я сравниваю объект a
с int
переменной. Затем я пытаюсь сравнить его с переменной string
, но файлы программы для компиляции. Когда строка, содержащая сравнение, прокомментирована, она просто компилируется. В чем проблема?
Получите ошибку компилятора? Что он говорит? Это вам что-нибудь говорит? Как возможно, что для этих типов параметров нет '==' перегрузки оператора, доступной для этих типов параметров? –
Попробуйте сделать такие операторы 'const' правильными, чтобы вы могли использовать их для' const A object; '. например, 'operator int() const {...}'. – iammilind