我自己写了一个类,里面要用到SOCKET,如下:
class MyClass
{
protected:
    SOCKET m_socket;
....
...
};
可是编译的时候却说报错,意思是SOCKET没声明,只要包含winsock2.h了就没错了,可是我看到有些别人写的类,他在.h里并没有包含了该头文件,却没有报错,请问是为什么?

解决方案 »

  1.   

    有可能放在了别的文件中(比如stdafx.h中),你没看到。
    在工程建立的时候,中间有一步可以选择SOCKET支持。
      

  2.   

    它可能包含了其它的头文件,在这些其他的头文件里包含了winsock2.h。
      

  3.   

    在mfc工程中的stdafx.h中自动包含了mfc核心的一些基本组件
      

  4.   

    你只要看到MFC源代码里面的SOCKET的定义,自己也可以定义一个相同的SOCKET,这样在定义这种类型的时候,就可以不包含头文件了。不过如果你要用SOCKET的函数,那就必须包含头文件了。
      

  5.   

    from winsock2.h:typedef u_int           SOCKET;你只要自己也这样定义一次就可以了。
      

  6.   

    噢,我明白了,只要在stdafx.h里包含了的类,然后在这个工程下,任何地方都可以使用该类,例如我在stdafx.h里包含了Myclass.h,然后我在本工程下的一个类里,即使不包含stdafx.h和Myclass.h,也可以使用?
      

  7.   

    不是吧?应该说你在stdafx.h里包含了Myclass.h,然后只要在你工程下的cpp中,只要包含stdafx.h就可以了而不用再次包含Myclass.h。
    两个都不用包含是不可能的