- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:error C2712: オブジェクト アンワインディングが...について)
error C2712: オブジェクト アンワインディングが必要な関数で__tryを使用できません。
このQ&Aのポイント
- VC++の勉強中ですが、例外処理についてよくわかりません。VS2005で発生するerror C2712について、解決方法を教えてください。
- 現在、C++のソースコードで__tryを使用していますが、オブジェクト アンワインディングが必要な関数内で使用できませんというエラーメッセージが表示されます。C++の例外を無効にせずに解決する方法について教えてください。
- C++のソースコードでオブジェクト アンワインディングが必要な関数で__tryを使用するとエラーC2712が発生します。VS2005環境での問題であり、C++の例外を無効にせずに解決する方法について教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
あまり正確なところは分かりませんが。 __try ブロックと同じ関数内でデストラクタが呼ばれる場合に そのエラーメッセージが出るようです。 「ブロック内」ではなく「関数内」なので、 以下のようにまとめて別関数とするだけで回避することができるようです。 void foo(){ Biz biz; // 必要なオブジェクトを別関数に // 例外が起き得る処理 } int main(){ // デストラクタを回避するため // この関数内にオブジェクトがあってはならない __try { foo(); } __except(EXCEPTION_EXECUTE_HANDLER){ // ここから復帰を試みる場合の処理 } return 0; } Windows API との関連は分かりませんでした。 以下のサイトも参考になさって下さい。