1

次のような関数を備えたライブラリがあります。

template<typename S1> void NastyFunction(S1 *array, EntryType S1::* member1);

したがって、次のような構造体の配列がある場合:

struct TData {
  float a;
  float b[10];
};

TData dataArray[N];

以下を使用NastyFunctionしてすべてのa-s に適用できます。dataArray

NastyFunction( dataArray, &TData::a );

これNastyFunctionをすべてに適用する方法b[7]-s in dataArray?

4

2 に答える 2

0

クラスメンバーを参照するだけのように、別のレベルの間接化を追加せずにそれを行うことはできません。

template<typename S1> void NastyFunction(S1 *array, EntryType* S1::* member1)
{
  EntityType value = *member1;
}

struct TData {
  float b[10];
  float* ref = &b[7];
};

TData *dataArray;
NastyFunction( dataArray, &TData::ref );

しかし、それは不器用な解決策のように聞こえます。

于 2013-11-26T15:33:48.643 に答える