Можно определить указатель на элемент и использовать его позже:
struct foo
{
int a;
int b[2];
};
int main()
{
foo bar;
int foo::* aptr=&foo::a;
bar.a=1;
std::cout << bar.*aptr << std::endl;
}
Теперь мне нужно иметь указатель на определенный элемент массива, поэтому обычно я пишу int foo::* bptr=&(foo::b[0]);
Однако компилятор просто жалуется на "invalid use of non-static data member 'foo::b'
"
Возможно ли это сделать вообще (или, по крайней мере, без союзов)?
Изменить: Мне нужен указатель на определенный элемент массива, поэтому int foo::* ptr
указывает на второй элемент массива (foo::b[1]
).
Еще одно редактирование: Мне нужно получить доступ к элементу массива с помощью bar.*ptr=2
, поскольку указатель используется в другом месте, поэтому его нельзя вызвать с помощью bar.*ptr[1]=2
или *ptr=2
.