ぶっちゃけ
通常のコンストラクタの他に
CFile():m_fp(NULL){}
みたいなデフォルトコンストラクタを作っといて
デストラクタで
if(m_fp)fclose(m_fp);
ってやれば当面の問題は解決されるんじゃないの?