1

我有一个函数库,如下所示:

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

因此,如果我有一个结构数组,例如:

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

TData dataArray[N];

我可以适用NastyFunction于所有a-sdataArray使用:

NastyFunction( dataArray, &TData::a );

如何将此NastyFunction应用于所有例如b[7]-s in dataArray

4

2 回答 2

2

你不能。虽然整个数组是类的成员,但它的各个元素不是,所以没有办法让成员指针指向它们。

于 2013-11-26T15:28:32.723 回答
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 回答