Arrays mit variabler Größe in C++ über ein scruct?

Gast #3170152
Lesenswert?
• ▲
▼
Hallo,
ich habe folgendes Problem:
Um ein einfaches Bild zu speichern habe ich folgendes struct angelegt:
1
struct image {
2
    uchar*  data; 
3
    int height;  
4
    int width;   
5
};

image.data ist ein drei dimensionales array, das mit image.data = new 
uchar[10][10][3] angelegt wird (nur als bsp.).

Auf diese Elemente möchte ich jetzt in meiner Funktion zugreifen.
Gedacht war das so:
1
R = test.data[i][j][0];
2
G = test.data[i][j][1];
3
B = test.data[i][j][2];

Allerdings kommt beim kompilieren die Fehlermeldung
"invalid types 'unsigned char[int]' for array subscript".

Nun die Frage, wie kann ich das ganze lösen? Das array wird immer eine 
andere Größe haben, deshalb kann ich das nicht im struct definieren.
Gibt es eine Möglichkeit einfach die Position in Bytes zu berechnen, an 
der das ganze liegt, und diese dann ausliest?

Danke für eure Hilfe!
Gast #3170220
Lesenswert?
• ▲
▼
xvzf schrieb:
> image.data ist ein drei dimensionales array, das mit image.data = new
> uchar[10][10][3] angelegt wird (nur als bsp.).

Ich denke, du könntest das dann auch wieder auf diesen Typ casten, damit 
der Compiler die Subskripte selbst umrechnet.

In C++ gibts aber sicherlich noch mindestens 100 andere tolle Klassen 
für sowas..
Gast #3170232
Lesenswert?
• ▲
▼
Sven P. schrieb:
> Ich denke, du könntest das dann auch wieder auf diesen Typ casten, damit
> der Compiler die Subskripte selbst umrechnet.

der type ist ja nicht konstant, sonst könnte er ihn ja hinschreiben. Im 
Type müsste die Dimensionen vorhanden sein, aber diese sind ja nicht 
fest.

> In C++ gibts aber sicherlich noch mindestens 100 andere tolle Klassen
> für sowas..
ja Container gibt es.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren