2016-03-24 6 views
-1

私はクラスコンストラクタから呼び出す必要があるCコード関数を持っています。クラスコンストラクタからNon Member関数を呼び出す方法

Class a{ 
..... 
} 
//Included the header file in the class and 
//declared the function globally as extern 
extern void ab(void); //function available in the c code 
a::a() //constructor of class a 
{ 
::ab(); //calling the non member function - giving an error 
} 

それはエラー与えている:誰もがこの問題を解決するために私を助けることができる「

を `AB(未定義の参照を)?コンストラクタのパラメータとして

+0

私はextern "C" void ab();を追加することでこのエラーを解決しました。それが呼び出される前に。 – tharunkumar

答えて

-2

送信ポインタ:あなたはあなたの関数を定義していないかのように

a::a(void (*ptrFun)(void)) 
{ 
    ptrFun(); 
} 
+0

非メンバ関数ポインタをコンストラクタのパラメータとして送信するにはどうすればよいですか? – tharunkumar

+0

externキーワードで達成できる方法はありますか? – tharunkumar

+0

または、クラス定義の前にグローバル関数を定義しようとしてください。私にとってはうまくいく。 –

1

供給コードとエラーから簡単に判断するには、それが見えます。あなたはそれを宣言しましたが、コンパイラはその関数の実装を見つけることができないと訴えています。これを解決するには、関数の実装を提供します。

void ab(void) 
{ 
    int x = 0; 
    printf("My int: %d", x); 
} 
+0

ab()関数が別の関数を呼び出しています。これは、定義済みの値でシリアルバスの初期化を行っています。 – tharunkumar

関連する問題