0

mc_int実際には int であるという名前のクラスがあり、いくつかの特別な能力があります。設定されていますoperator int()

mc_int::operator int() {
        return value;   //int mc_int::value - the real int value of the class
}

しかし、クラスにアクセスしようとすると、エラーが発生するため、 cout<<常にクラスを int ( にキャストする必要があります。cout<<(int)mc_int_instance

複数の演算子 "<<" がこれらのオペランドに一致します。

同様に、これは、クラスにも <<演算子が定義されているという事実によって引き起こされる可能性があります。ここで何をしますか?

4

1 に答える 1

0

C++11 を使用している場合は、explicitキーワードを使用して作成できるため、明示的に に変換する必要がありますint。詳細はこちら

explicit mc_int::operator int()

使用するときは、定義したオペレーターメソッドを使用する必要が<<あり、コンパイラーにとってあいまいではなくなります。int を使用したい場合は、やったように、または でキャストするだけですstatic_cast<int>(the_object)

于 2013-03-17T23:57:59.263 に答える