1 次元配列ポインターと 2 次元配列ポインターの両方を共用体に入れたいので、どちらの方法でもデータにアクセスできます。9次のプログラムでは、値が両方の方法で出力されることを確認したいと思います。
#include <iostream>
class A {
public:
    union {
        int** array2D;
        int*  array1D;
    };
    A() {
        array2D = new int*[1];
        array2D[0] = new int[1];
    }
};
int main() {
    A a;
    a.array2D[0][0] = 9;
    cout << a.array2D[0][0] << endl;
    cout << a.array1D[0]    << endl;
    cout << a.array2D << endl;
    cout << a.array1D << endl;
}
実際の出力:
9
146989080
0x8c2e008 //Pointer address of array2D
0x8c2e008 //Pointer address of array1D
アドレスは同一であり、定義により、多次元配列は 1 次元配列と同じ方法で格納されます。なぜ 2 つcoutの s が異なる結果を出力するのだろうか? 私は何を取りこぼしたか?
編集:以下の回答のおかげで、私が見逃したものを見ることができます。array1D からデータにアクセスするための修正は次のとおりです。
cout << *( (int*) a.array1D[0])    << endl;