我有一个带有函数的库,如下所示:
template<typename S1> void NastyFunction(S1 *array, EntryType S1::* member1);
所以,如果我有一个结构数组,如:
struct TData {
float a;
float b[10];
};
TData dataArray[N];
我可以使用NastyFunction
将a
应用于dataArray
中的所有NastyFunction( dataArray, &TData::a );
-
NastyFunction
如何将此b[7]
应用于dataArray
中的所有{{1}} - s?
答案 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 );
但这听起来像是一个笨拙的解决方案。