Anfängerprobleme
-
Hallo zusammen,
kann sich den folgenden Code vielleicht bitte mal jemand anschauen der nicht wie ich gerade die mehr oder weniger anfänglichen Schritte in C++ macht. Danke. Also ich habe versucht mir eine eigene Klasse SFColor zu schreiben. Die momentan einzige Variable der Klasse ist ein Array mit drei Werten (rot, grün, blau). Durch GetValue soll der Wert der Variablen zurückgegeben werden und mit den beiden SetValue Varianten soll der Wert gesetzt werden können. Gibt es in C++ sowas wie Properties in C#? Am liebsten wäre mir ein Zugriff auf die einzelnen Elemente des Arrays a la
SFColor sfColor; sfColor[0] = 1f; cout << sfColor[2];wie kann man das umsetzen? Bin für jegliche Kritik und Anregung bezüglich sauberer Programmierstil, Umsetzung, etc. zu haben.
// SFColor.h #ifndef SFCOLOR_H #define SFCOLOR_H class SFColor { private: float value[3]; public: SFColor(float r = 0, float g = 0, float b = 0); float* GetValue(); void SetValue(float value[3]); void SetValue(float r, float g, float b); }; #endif // SFColor.cpp #include "SFColor.h" SFColor::SFColor(float r /* = 0 */, float g /* = 0 */, float b /* = 0 */) { SFColor::value[0] = r; SFColor::value[1] = g; SFColor::value[2] = b; } float* SFColor::GetValue() { return SFColor::value; } void SFColor::SetValue(float r, float g, float b) { SFColor::value[0] = r; SFColor::value[1] = g; SFColor::value[2] = b; } void SFColor::SetValue(float value[]) { SFColor::value[0] = value[0]; SFColor::value[1] = value[1]; SFColor::value[2] = value[2]; } // Main.cpp #include <iostream> #include <string> #include "SFColor.h" using namespace std; int main() { SFColor sfColor; //sfColor.SetValue(0.5f, 0.8f, 0.4f); float aColor[3] = { 0.5f, 0.8f, 0.4f }; sfColor.SetValue(aColor); float* color = sfColor.GetValue(); cout << color[0] << " " << color[1] << " " << color[2] << "\n"; string line = ""; cin >> line; }Gruß
Patrick
-
also properties wie in c# gibts erstmal so nicht.
aber dein problem kann man mit überladen des operator[] lösen.
-
Deine Klasse brauchst einen operator []
z.bclass SFColor { private: float value[3]; public: SFColor(float r = 0, float g = 0, float b = 0); float* GetValue(); void SetValue(float value[3]); void SetValue(float r, float g, float b); float & operator [] ( int idx ) { return value[idx]; } };dann funktioniert
int main() { SFColor sfColor; sfColor[0]= 1.0f; cout << sfColor[0]; }Kurt