如何指定数组元素的成员指针?

时间:2013-11-26 15:24:14

标签: c++ arrays pointers data-members

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

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

所以,如果我有一个结构数组,如:

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

TData dataArray[N];

我可以使用NastyFunctiona应用于dataArray中的所有NastyFunction( dataArray, &TData::a ); -

NastyFunction

如何将此b[7]应用于dataArray中的所有{{1}} - s?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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 );

但这听起来像是一个笨拙的解决方案。