2013-11-26 112 views
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在dataArray

回答

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); 

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