我在写一个winsock程序时,当在Dialog类中加入一个Socket类的成员变量后出现错误:
e:\program\talk\talk1\mysocket.h(27) : error C2061: syntax error : identifier 'CTALK1Dlg'
e:\program\talk\talk1\mysocket.h(43) : error C2143: syntax error : missing ';' before '*'
e:\program\talk\talk1\mysocket.h(43) : error C2501: 'CTALK1Dlg' : missing storage-class or type specifiers
e:\program\talk\talk1\mysocket.h(43) : error C2501: 'm_pDlg' : missing storage-class or type specifiers据说是编译顺序问题?求教。

解决方案 »

  1.   

    mysocket.h
    ===========class CTALK1Dlg;....CTALK1Dlg *m_pDlg;
      

  2.   

    在头文件的类声明上面写上这么一句:
    class CTALK1Dlg;
    如果不行就包含CTALK1Dlg的头文件。
      

  3.   

    包含头文件
    #include "talkdlg.h"
      

  4.   

    #include "talkdlg.h"和class ctalkdlg;
    两种声明方法在编译上是有区别的吧?
      

  5.   

    当然有区别了。class只是告诉编译器后面的符号是一个类名,仅仅是一个符号而已,具体有什么函数是无从知道的,也不需要知道。
    而include就相当于把头文件嵌入到#include的位置,头文件的一切都可以看到。
    另外我认为class要比包含头文件要快,避免了重复包含。