Как указать указатель на элемент массива?

У меня есть библиотека с функцией, которая выглядит так:

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

Решение

Ты не можешь В то время как весь массив является членом класса, его отдельные элементы не являются, поэтому нет никакого способа сделать указатель на элемент указателем на них.

2

Другие решения

Вы не можете сделать это без добавления другого уровня косвенности, так что вы просто обращаетесь к членам класса, например:

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

Но это звучит как неуклюжее решение.

0

По вопросам рекламы [email protected]