以下は、トリプル ネストされたインデックス スキームです。ポインターの配列へのポインターは、コメント行で逆参照されます...理論的には、これによりポインターが得られるはずです。そこから 1 を引いて参照し、それをポインタの配列へのポインタに再割り当てします。しかし、その行では、オペランド「&」の左辺値エラーが発生します。
完全に明確にさせてください。ここでエラーが発生している理由を知り、ポインターの配列内の前の要素のアドレスをフレームダブルポインターに割り当てるために機能するメソッドを取得したい。
両方の基準を満たす完全なソリューションのみを受け入れます....
#include <iostream>
typedef struct frame_s {
double ** TestArrayPointer;
} frame_t;
main () {
double * TestArray;
double ** TestPointerArray;
TestArray = new double [100];
TestPointerArray = new double * [100];
for (unsigned int Counter = 0; Counter<100; Counter++)
{
TestArray[Counter]=Counter;
TestPointerArray[Counter]=&(TestArray[Counter]);
}
frame_t Frames[10];
for (unsigned int Counter = 0; Counter<10; Counter++)
Frames[Counter].TestArrayPointer = &(TestPointerArray[Counter*10]);
//Move pointer to point at array position one back.
Frames[2].TestArrayPointer=
&(*(Frames[2].TestArrayPointer)-1); //error! here <--
//OUTPUT Values...
for (unsigned int Counter = 0; Counter<100; Counter++)
std::cout << "P: " << TestPointerArray[Counter] << " V: "
<< *(TestPointerArray[Counter]) << std::endl;
}