次のコードは、xxx行だけが出力された(つまり、 "pre concat"の前に)セグメンテーションフォルトを生成します。C++演算子+ string longがセグメンテーションフォールトを生成する
cerr << "xxx + " << ((long long) timev);
string cname = "MyKey" + ((long long) timev);
string operator+(const string& str, long long nr) {
cerr << "Pre concat "; // << str << "$" << nr;
stringstream ss;
ss << str << nr;
cerr << "Post concat";
return ss.str();
}
何故でしょうか?
(私はこれで間違っているものを見ることができれば、私はちょうどそれが他のモジュールと競合する可能性があるとして、おそらく悪い考えである標準タイプの演算子をオーバーロードし、メソッドを使用します。しかし、のろわれます。)
できtimev' 'の宣言は何ですか? – Maikel
'std :: cout <<" MyKey "+ 2;'の出力を見てください。前の行で '<<'の代わりに '+'を使用した場合は、問題を発見したでしょう。 – molbdnilo
デバッガの使用方法を学びます。 –