Probleme mit der setmethode
-
Hallo ich schreibe momentan ein programm und habe mit dem Klassenexplorrer eine neue eigenschaft erstellt, welche private ist und dann auch gleich noch eine set und eine get methode erstellt. doch wenn ich mein programm jetzt strate bekomme ich jedes mal wenn ein objekt mit dieser eigenschaft erstellt wird einen EStackOverflow, weil das programm immer wieder die set methode aufruft. kann mir vielleicht jemand helfen?
thx
KlopferHier ist die Setanfangmethode (.cpp):
void __fastcall Graphvektor::Setanfang(bool value)
{
anfang=value;
}Hier ist die Setanfangmethode (.h):
private:
void __fastcall Setanfang(bool value);
bool __fastcall Istanfang();
void __fastcall Setende(bool value);
bool __fastcall Istende();
__property bool anfang = { read=Istanfang, write=Setanfang };
__property bool ende = { read=Istende, write=Setende };und hier noch der default constructor:
Graphvektor::Graphvektor()
{
wert[0]=0;
wert[1]=0;
wert[2]=0;
Setanfang(true); //hier fängt der shit an ;-D
Setende(true);
}
-
Hallo,
Schau dir mal die Reihenfolge deiner Aufrufe an. In der SetAnfang-Methode weist du anfang einen Wert zu. Da anfang deine property ist wird dadurch SetAnfang aufgerufen etc.
-
ganz genau. du musst für jedes property eine zusätzlich variable anlegen in der du den wert des property speicherst.
beispiel:
// im header private: // geschützte variablen und funktionen bool FAnfang; void SetAnfang(bool); public: // properties sind public, damit man von aussen zugreifen kann __property bool Anfang = { read = FAnfang, write = SetAnfang };
// im cpp void __fastcall TMeineKlasse::SetAnfang(bool Value) { if (FAnfang != Value) FAnfang = Value; }
-
Was für einen Sinn hat diese Abfrage hier??
if (FAnfang != Value)
-
naja hier hats keinen sinn schon richtig, ich hab das auch nur fix copy + pasted. wenn du eine neue komponente schreibst, dann macht die abfrage sehr viel sinn!