掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
式の評価順序、奇妙な振る舞い (ID:71599)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
リンク先をちょこっと読んだ上でのものなので、違っているかもしれせん。 クラッシュする原因は、A[i]の評価とrecの呼び出し順序の問題になると思います。 ・A[i]よりも先にrecの呼び出しがあった場合 問題は起きない ・recの呼び出しより先にA[i]が評価された場合 recの中のpush_backの呼び出しにより、評価されたA[i]の参照が無効化されるので、クラッシュの可能性がある。 ということでしょう。 前者は、 > A[i].X = rec(idx+1); は、 int _tempX = rec(idx+1); XYZ& _tempXYZ = A[i]; _tempXYZ.X = _tempX; であり、後者は、 XYZ& _tempXYZ = A[i]; int _tempX = rec(idx+1); _tempXYZ.X = _tempX; なのだと思います。 # XYZ * const _tempXYZ = &A[i];とした方が問題がわかりやすいかもしれません。 なかなか、説明するのが難しいですが……。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.