template <class T> 
class CNodeList  
{
public:
CNodeList(BOOL IsMutil=TRUE)
{
Initial();
};
virtual ~CNodeList()
{
if(m_Event!=NULL)
CloseHandle(m_Event);
};
int GetSize(){return m_list.size();};
T PopNode();
T PopFrontNode();
void Remove(T t);
BOOL PushNode(T t);
BOOL PushFrontNode(T t);
BOOL Empty();
T Head();
friend bool CheckMember(CNodeList<T>* pList,
  bool (*pCheckFun)(T t),
  CNodeList<T>* pEraseList);
private:
list<T> m_list;
HANDLE m_Event;
BOOL m_IsMutil;
CBuffer m_Buffer;

public: bool Initial(BOOL IsMutil=TRUE)
{
m_IsMutil=IsMutil;
if(IsMutil)
m_Event=CreateEvent(NULL,FALSE,TRUE,NULL);
else
m_Event=NULL;
return false;
}
};
template <class T>
bool CheckMember(CNodeList<T>* pList,
  bool (*pCheckFun)(T t),
  CNodeList<T>* pEraseList)
{
list<T>::const_iterator t1;
for(int i=0;i<pList->GetSize();i++)
{
t1=pList->m_list.begin();
if(!pCheckFun(*t1))
{
pEraseList->PushNode(*t1);
}
t1++;
}
    
return true;
}在函数CheckMember中提示无法访问私有成员变量m_list
而在vs6.0中可以正常编译,请问各位大哥大侠是何原因????