MFC のプログラミング。
CTypedPtrArray を使ってオブジェクトの配列を作ったんだけど、うまくいかない。
ビルドエラーも特にないのに、起動直後に mfc90ud.dll がアクセス違反を吐く。
CPtrArray の GetCount() で落ちている。
なんでかなぁ。
CTypedPtrList に変えてみたり、シリアライズを実装してみたり、いろいろ意味があるのかないのかわからないことをしても変わらない。
なぜだ!
残業。
おなかが空いたのでカレーを食べてから再度確認してみたら、原因がわかった。
配列の処理がおかしいのではなく、その前にある処理が悪かったらしい。
View クラスで GetDocument() を呼んでいたんだけど、ここでぬるぽが返ってきてた…。
CSplitterWnd で分割した CView の内部にツールバーを付けたかったので、CView じゃなくて CFrameWnd に変えたんだよね。
CToolBar は CFrameWnd にしか付けられないので。
通常は CSplitterWnd の Pane - CView という形なんだけど、今回は Pane - CFrameWnd - CView という形。
すると、最後の CView には CDocument が割り当てられていないので、GetDocument() は NULL を返した、ということだった。
やっぱりおなかが空いているとアタマも働かないね。
解決したので帰ろう。