2011-08-22 16 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:* Sigh *ありがとう、私の愚かさ。 –

4

使用修飾名の検索

::my_foo(val); 

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

関連する問題