0

.h ファイルと .cpp ファイルを使用するプロジェクトに取り組んでいます。関数ポインターの配列を利用したい関数を作成しています。配列内の各関数は、列挙型に関連する条件に基づいて呼び出されます。.h ファイルで 5 つの関数と配列自体を宣言しました。どのファイルで、配列の各値を適切な関数 (.h または .cpp) に設定する必要がありますか?

4

2 に答える 2

1

配列定義自体が .h ファイルにある場合、問題が発生することが予想されます。

.c ファイルで配列を (値の設定と共に)定義する必要があります。

.h ファイルで、次のように配列を extern として宣言します。

extern func_pointer_t array[];

しかし、グローバルは一般的に悪い考えです。配列から関数ポインタを取得するための API を提供することを検討する必要があります。

func_pointer_t get(unsigned int i);
于 2012-10-17T23:03:14.447 に答える
1

通常、変数の割り当ては「.cpp」ファイルで行われます。グローバルに必要な場合は、何かを .h ファイルに入れます。

また、配列内に存在できる関数ポインター型は 1 つだけであることに注意してください。つまり、すべての関数が同じ署名を持つ必要があります。

関数オブジェクト、または関数オブジェクトへのポインターを保持するように配列を変更すると、基本関数オブジェクトから派生したさまざまな関数オブジェクトを作成できます。

std::vectorおよびも参照してくださいstd::map

于 2012-10-17T23:03:21.343 に答える