今天我听一个朋友说,在MFC里用API里的函数时,如果是全局变量就要加::,但是我没听明白,在什么样的情况下加::在什么情况下不要加.请高人指点一二.举个例子吧. if(::CopyFileW(pBuf2,pBuf,FALSE))
{
.....
}和
CopyFileW(pBuf2,pBuf,FALSE);都是在一个.CPP文件里,一样的函数为什么有的加,有的不加?

解决方案 »

  1.   

    为了防止这样的情况发生
    class A
    {
    public:
     void CopyFileW(LPCTSTR,LPCTSTR,BOOL);
     void Test(void);
    };void A::Test(void)
    {
     ::CopyFileW(...);//说明调用的是全局的CopyFileW而不是A::CopyFileW}
      

  2.   

    不是
    if(::CopyFileW(pBuf2,pBuf,FALSE)) //.h在头文件里未定义CopyFileW(..)

    ..... 
    } 和 
    CopyFileW(pBuf2,pBuf,FALSE);//在.h头文件里也没有定义那个CopyFileW(..)我右击CopyFileW,查看这个没加::在哪定义的,为什么跳到winbase.h这个系统文件里.也许我问的有点偏.能回答多少就回答多少吧.
      

  3.   

    ::是作用域 如果::之前什么都没有就表示是全局作用域
    如果MyClass::MyStaticFun()就表示是某个类的作用域
    某具体研究,大概是这个意思