I receive some image data as `unsigned char *image = load_image(…);`

This data is a 3D matrix: `x` (char),`y` (char) and `channel (RGB)` (char).

How can I access each element as `image[x][y][channel]` by overloading `[]`? E.g. row 999, column 10000, green channel: `image[999][10000][1]`

Clarifications:

1. I'd like to use C multi-dimensional array syntax: `array[x][y][z]`, not `array[x * height * channels + y * channels + z]`
2. I can access a 1D array as a 2D array:

```
unsigned char (*imageMatrix)[height] = (unsigned char (*)[height])image
imageMatrix[x][y] = 100

```
3. [I already asked](https://stackoverflow.com/posts/47267624/) how to do it in pure C. Here I want to know how it can be better achieved in C++.