は、次のコードを想定します。なぜキャスト演算子を比較に使用できないのですか?
#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;
}
まず、私はint
変数とオブジェクトa
を比較します。次に、私はそれをstring
変数と比較しようとしますが、プログラムファイルをコンパイルします。比較を含む行がコメントアウトされているので、コンパイルはうまくいきます。何が問題ですか?変換が適切に起こる保証し
コンパイラエラーはありますか?それは何と言いますか?それはあなたに何かを教えたのですか?おそらく、これらのパラメータ型で利用可能な演算子のオーバーロードはありませんか? –
このような演算子を 'const'にすると、' const A object; 'に使うことができます。例えば、演算子int()const {...} 'のようになります。 – iammilind