#include class myMatrixNxN { public: // This class has the SAME structure as MatrixNxN float *A; int N; }; // --------------------------------------------- MatrixNxN: Dynamic size matrix class MatrixNxN { private: float *A; int N; public: /* ------------------------------------------ Constructor(int) ------------------------------------------ */ MatrixNxN(int n) { cout << "Allocating an nxn float matrix, with n = " << n << endl << endl; A = new float[n*n]; N = n; } /* ------------------------ Print(): print matrix ------------------------ */ void Print() { int i, j; for (i = 0; i < N; i = i + 1) { for (j = 0; j < N; j = j + 1) cout << A[i*N+j] << "\t"; cout << "\n"; } cout << "\n"; }; }; // ----------------------------------------------------------------------- int main(int argc, char *argv[]) { int N = 4; MatrixNxN M(N); myMatrixNxN *X; X = (myMatrixNxN *) &M; // Copy the address of M into X // Now we can get to the private variables !!! int i, j, k; k = 1; for (i = 0; i < N; i = i + 1) for (j = 0; j < N; j = j + 1) { X->A[i*N+j] = k; // I CAN access private member variable !! k = k + 1; } cout << "Matrix M:" << endl; M.Print(); cout << endl; }