コンパイラは変換演算子の助けを借りて、あるオブジェクトを他のオブジェクトの型に変換しようとします。これを行う方法は2つあります。コンストラクタ(クラスを他のクラスに変換する)または変換演算子.So 、これは単なるテストすることです、私は下の【選択コードがエラーにC++の変換演算子
using namespace std ;
class A
{
int i ;
public:
A(int a=0){this->i=a;}
A operator+(const A& b){
A c ;
return c(this->i+b.i);
}
void show()
{
cout<<i<<endl;
}
};
int main()
{
A a1(1),a2(2),a3;
a3=a2+a1;
a3.show();
return 0;
}
を与え、私はエラーがオペレータ+ .Whenであると思い概念を徹底していた場合、私は、(i).Thereを割り当てようですintからAを作成できる演算子には一致しません。
しかし、私はこのAのコンストラクタが潜んでいるのを見ています。これはintをAに変換できます。補間、intをAに変換します。呼び出しはA(B)になります。これはコピーコンストラクタこの呼び出しはうまくいくはずです。しかし、そうではありません。まったく、まったく混乱しています。
助けてください。あなたがその存在しない演算子()(int)を呼び出し、その戻り値を返す、その後、デフォルトコンストラクタを持つオブジェクトを構築するためにコンパイラに指示していこの2行で
エラーメッセージを貼り付けます。 –
これらのメソッドを 'const'にします(回答で指摘されたエラーを修正した後)。 –