コンパイルしてうまく動作するC++コードがありますが、私は助けが必要だと疑いがあります。 私はここの初心者ですので、私にご負担ください。これがコードです。コンストラクタのみ初期化時に、ではない通常の中に呼び出され、私の知る限り理解しfl(float val){ this->val = val; }
オブジェクト割り当ての動作が混乱する
op_ovl_1.cxx: In function 'int main()':
op_ovl_1.cxx:15:12: error: no match for 'operator=' in 'var0 = 6.0e+0'
op_ovl_1.cxx:5:10: note: candidate is: fl& fl::operator=(const fl&)
op_ovl_1.cxx:17:12: error: no match for 'operator=' in 'var1 = 8.0e+0'
op_ovl_1.cxx:5:10: note: candidate is: fl& fl::operator=(const fl&)
:私は、このオーバーロードされたコンストラクタをコメントして
#include <iostream>
using namespace std;
//class float
class fl {
float val;
public:
fl(){ val = 0.0; }
fl(float val){ this->val = val; }
float get_val(){ return val; }
};
int main(){
fl var0, var1;
var0 = 6.0;
cout << "var0.val after " << var0.get_val() << endl;
var1 = 8.0;
cout << "var1.val after " << var1.get_val() << endl;
return 0;
}
上記のコードは、しかし、このエラーをコンパイルしたレポートはありません私が間違っているなら、私を修正してください。それで、コンストラクタが通常の割り当てのために呼び出されるように見えるのは、いくらか混乱していませんか?
このコードは、GCCとClangの上で私をうまくコンパイルします。どのコンパイラを使用していますか?また、コンストラクタは次のように書かれています: 'fl():val(0.0){}'と 'fl(float val):val(val){}' –
@tenfour yv14i –
ええ、コンパイルして正常に動作します。基本的な疑問はありましたが、なぜ私は過負荷になっていないときにコンパイルすべきですか?助けてくれてありがとう、btw。 – vikasC