我定义了一个自己的类叫chess,并且在chess类中定义了一个chess类型的指针变量*b, 然后在另一个类的cpp文件中用extern chess *b引用这个变量,并且在一个函数中new一个chess对象并赋值给b。最后单独编译所有的cpp文件都能顺利成功,但link时总是报错说:
Linking...
gameFrame.obj : error LNK2001: unresolved external symbol "class chess * b" (?b@@3PAVchess@@A)
Debug/gameApp.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.不知我错在那里了?

解决方案 »

  1.   

    class chess * b; 需要全局定义,放到类外边
      

  2.   

    class chess;
    类中
    chess * b;
      

  3.   

    类的使用
    在其它类中使用某个预先定义的类
    在头文件(.h)中类的定义之前:
    class chess;
    ....
    chess * m_pChess;在实现文件(.cpp)中:
    #include "chess.h"
    .....
    m_pChess = new chess;
    m_pChess->....
    或者直接指向某个实例:
    m_pChess = g_pOther->m_pChess;
      

  4.   

    >我定义了一个自己的类叫chess,并且在chess类中定义了一个chess类型的指针变量*b, 然后在另一个类的cpp文件中用extern chess *b引用这个变量
    这样引用是错误的。extern chess *b是一个全局变量,而chess类中定义的一个chess类型的指针变量*b是成员变量。即使b是静态的,访问它也需要加上chess::前缀。