如题

解决方案 »

  1.   

    #include "JetByteTools\Win32Tools\SocketServer.h"
    #include "JetByteTools\Win32Tools\tstring.h"///////////////////////////////////////////////////////////////////////////////
    // Classes defined in other files...
    ///////////////////////////////////////////////////////////////////////////////namespace JetByteTools
    {
       namespace Win32
       {
          class CIOCompletionPort;
       }
    }class CSocketServer : public JetByteTools::Win32::CSocketServer
    {
       public :      CSocketServer(
             const std::string &welcomeMessage,
             unsigned long addressToListenOn,
             unsigned short portToListenOn,
             size_t maxFreeSockets,
             size_t maxFreeBuffers,
             size_t bufferSize = 1024,
             size_t numThreads = 0);
    }
    这段代码是什么意思?我一点都看不懂
      

  2.   

    namespace就是给你一个空间,你在里面可以定义自己的函数或类,当你定义的函数或类和别人定义的函数或类相同的时候,就需要名字空间来限定,比如你调用了一个函数SomeFunc,这是你使用的类库里面,有好几个函数都叫SomeFunc,你就可以用ClassLib::SomeFunc来指定我是要调用ClassLib的SomeFunc,就像D盘有个文件叫readme.txt,E盘也有一个文件叫readme.txt,你说我要打开readme.txt,那么人家怎么知道你是要打开哪个呢?如果你说我要打开E:\readme.txt就清楚了
      

  3.   

    namespace JetByteTools
    {
       namespace Win32
       {
          class CIOCompletionPort;
       }
    }
    那么这段代码的意义何在?代表了什么意思?
      

  4.   

    意义何在:如果我开发了一个类库,里面也有class CIOCompletionPort;而且你在使用我开发 的类库的同时,也使用了这个人开发的类库,那么你在你的程序里面使用了class CIOCompletionPort;那么编辑器就要问你,你到底是要用谁的class CIOCompletionPort;那么你就要像上面一样完全限定class CIOCompletionPort;就是JetByteTools::Win32::CSocketServer
      

  5.   

    那么我自己再来解释一下,如果我使用了
    using JetByteTools::Win32::CIOCompletionPort;
    那么以后凡是直接使用CIOCompletionPort的地方就代表了这个名字
    空间里的CIOCompletionPort,而不是其他人的,如果要用其他人的
    必须在CIOCompletionPort前面加上详细的名字空间?是也不是?
    如果我这样说法正确的话,今天晚上真是太感谢你了,呵呵。
      

  6.   

    命名空间。
    上面说得很清楚了。
    这方面你可以把它同class一样联系起来理解嘛,他们有类似之处。不同类可以有同名函数,和namespace的限制是一样的。
    MSDN的原文是,A namespace declaration identifies and assigns a name to a declarative region
    够清楚了。