if ((!m_pMediaPage->PageLayer() || !m_pMediaPage->LoadState()) &&
!m_pMediaPage->m_bRequestList)
{
GetListInfo();
m_pMediaPage->m_bRequestList = TRUE;
}
すべての値が 0 の場合、GetListInfo() は実行されません。
PageLayer() と LoadState() は int を返し、m_bRequestList は int です。
基本的に次のように書き換えます。
if ((!0 || !0) && !0) -or- if ((1 || 1) && 1)
if ステートメントによって評価される値は、実際にはデバッガーから見たものとは異なるとしか思えません。
Visual Studio 2005 を使用しており、1 行目と 4 行目にブレークポイントを設定して値を調べ、if ステートメントで実行されるかどうかを確認します。これをデバッグする方法が他にわかりません。
先ほど言ったように、ブレークポイント 1 のときにデバッガーから見た 3 つの値はそれぞれ 0 です。
.h の関数:
int PageLayer() {return m_iCurrentLayer;} - protected
BOOL LoadState() {return m_bLoadDone;} - protected
ブール:
typedef int BOOL;