Ich habe eine Template-Klasse Array, die ein zweidimensionales Array implementiert. Die Array-Klasse enthält einen überladenen Operator(), die an der auf Null basierende Position einen Verweis auf das Element zurückkehrt (Spalte x, Reihe y):Ausdruck muss ein modifizierbarer Wert sein: `(x, y) = 0;`
const T & operator() (int x, int y) const {
size_t loc = y*width + x;
return *(buffer + loc);
}
Ich habe auch ein Klassenbild abgeleitet ist, die einen generischen Datencontainer darstellt für eine Bildklasse Bildes.Verfahren ppm enthält eine setPixel Methode, die die RGB-Werte für einen (x, y) Pixelsätze:
void setPixel(unsigned int x, unsigned int y) {
size_t locpixel = y*width + x;
size_t componentofpixel = locpixel * 3;
(x, y) = 0;
(x, y) + 1 = 1;
(x, y) + 2 = 0;
}
wenn ich also kompilieren es zeigt einen Fehler in setPixel daß der Ausdruck eine modifizierbar sein muß lWert. Gibt es eine Möglichkeit, den Operator() in meiner setPixel-Methode zu verwenden, um das nächste Element auf dem Array zu nehmen?
Erwarten Sie, dass '(x, y)' Ihren 'operator()' aufruft? – NathanOliver
Das ist was ich versuche zu tun –
Sie benötigen eine Instanz, um den Operator anzurufen. versuchen Sie '(* das) (x, y) ...' – NathanOliver