ein Spielzeug struct
mit einem Standardkonstruktor wie dieser Gegeben: Ich habe keinen ZugriffInitialisiere öffentlichen Mitglieder einer Struktur mit einem Standard-Konstruktor
struct RGB {
unsigned char r, g, b;
RGB()
:r(0), g(0), b(0) {}
};
Wie initialisiere ich ein auf eine bestimmte Farbe, unter der Annahme zu der Quellcode, um meinen eigenen Konstruktor hinzuzufügen.
Ich verstehe nicht ganz, warum diese nicht funktionieren:
// OK, I can sort-of accept this one
RGB red = {255, 0, 0};
// Not shorthand for green.r=0, green.g=255, green.b=0;?
RGB green = {.r = 0, .g = 255, .b = 0};
// I seem to be missing a constructor that accepts a list?
RGB blue{0, 0, 255};
Gibt es eine andere C++ 11 Art und Weise die gute altmodische zu verkürzen:
RGB yellow;
yellow.r = 255;
yellow.g = 255;
yellow.b = 0;
Außerdem Wie könnte ich die struct
Deklaration minimal modifizieren, um irgendeine der oben genannten zu unterstützen, sowie eine Standardinitialisierungsmethode zu haben.
Die "ideale Lösung" ist nicht so ideal bezeichnet werden - es definiert eine implizite Konvertierung von 'unsigned char' zu' RGB'. –
Danke, ich habe das Problem wahrscheinlich übertrieben. Ich sollte einen Fehlerbericht/eine Änderungsanforderung an das Projekt senden, das die problematischen Header generiert, um zu sehen, ob sie leicht initialisierungsfreundlichere Konstruktoren erstellen können. –