A.h:
______________________#if !defined(A_H_INCLUDED_)
#define A_H_INCLUDED_
class A
{
  public:
   static BOOL m_bHasMsg;
    
    BOOL HasNewMsg() {  return m_bHasMsg;};
}
 BOOL A::m_bHasMsg=FALSE;
#endif______________________________
B.h
_______________________
#include "A.h"
class B
{
   A *pa1;
   A *pa2;
}
-------------------------------A.obj : error LNK2005: "public: static int  A::m_bHasNewMsg" (?m_bHasMsg@A@@2HA) already defined in B.obj

解决方案 »

  1.   

    BOOL A::m_bHasMsg=FALSE;
    这句代码放到A。CPP中。
    就可以了。
      

  2.   

    奇怪啊,我这里没有这个现象,连接成功了。VC.net
    不过 BOOL A::m_bHasMsg=FALSE; 这句话放在头文件里确实看上去比较古怪
      

  3.   

    A.c
    BOOL A::m_bHasMsg=FALSE;
      

  4.   

    在.c 或.cpp里
    BOOL A::m_bHasMsg=FALSE;
      

  5.   

    BOOL A::m_bHasMsg=FALSE; // 这句话导致的!可以删除,或者在程序中赋值
      

  6.   

    多谢各位回复。重复定义,寒!头文件叫申明,实现叫define搞混淆了