web-dev-qa-db-ja.com

同じ宣言を持つクラスメソッドを使用してグローバル関数を呼び出す

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
    }
 }

スコープ解決演算子::

int my_foo( int val ){
    // Call the global function 'my_foo'
    return ::my_foo(val);
}
58
Adam Rosenfield

使用修飾名ルックアップ

::my_foo(val);

これは、ローカル関数ではなくグローバル関数を呼び出すようにコンパイラーに指示します。

8
Alok Save
::my_foo(val);

それはそれをする必要があります。

7
nobody