why my program can not run correctly?

m_lstA.remove(*iter); <-----error!!!!


///// part code as follow:

Code:
class A  
{
public:
  A();
  virtual ~A();
  bool operator== (const A& rhs){
	return rhs.m_strName == m_strName && rhs.m_nNum == m_m_nNum;
  };

  CString m_strName;			//
  int m_nNum;
};

....
	
std::list<A> m_lstA;

......

std::list<A>::iterator iter = m_lstA.begin();
for(; iter != m_lstA.end(); ++iter){
  if(iter->m_strName == strName){
    m_lstA.remove(*iter);   <----error!!!!!!!!
  }
}