2011-08-22 103 views
23

我想在C++類中包裝一個C庫。對於我的C++類,我也希望這些C函數使用相同的聲明:是否可以這樣做?用一個類聲明方法調用一個全局函數,聲明相同

如果例如我有下面的情況如何區分C函數和C++函數?我想打電話給C。

extern int my_foo(int val); // 

class MyClass{ 
    public: 
    int my_foo(int val){ 
      // what to write here to use 
      // the C functions? 
      // If I call my_foo(val) it will call 
      // the class function not the global one 
    } 
} 

回答

40

使用scope resolution operator ::

int my_foo(int val){ 
    // Call the global function 'my_foo' 
    return ::my_foo(val); 
} 
+3

您忘記在代碼示例中使用範圍解析運算符。你現在有一個遞歸函數調用,導致stackoverflow上的stackoverflow :) –

+0

@Als,Bo:*嘆*感謝,我多麼愚蠢。 –

4
::my_foo(val); 

應該這樣做。

4

使用合格的名稱查找

::my_foo(val); 

這告訴你要調用的全局函數,而不是本地函數編譯器。