Zugriff auf Class Element erzeugt SIGSEGV
-
Hallo,
Hier mal der Reduzierte Code:
class User{ private: time_t ltime; ...; public: void Update(); void Init(...); ...; }void User::Update(){ ltime=time(<ime); }Bei einem Anderen Element von User hab ich das Problem umgangen indem ich den Zeiger statt dem Objekt returned habe (war ne andere Funktion).
Ich hab in meinem Programm einen Array von Usern. Wenn ich einen neuen User hab, gibt das auch keine Probleme den entsprechend zu initalisieren.
Bei einem Anderen Element von User hab ich eine Funktion die eigentlich den Wert zurück geben soll, die hab ich durch eine Funktion ersetzt die nur einen Pointer auf das Objekt zurück gibt, danach hatte ich das SIGSEGV problem dort nichtmehr.
Aber hier kann ich das Problem nicht so einfach umgehen, außerdem sollte ich wohl auf die Elemente einer Klasse zugreifen können, oder?
Kann mir jemand sagen woran es liegen könnte bzw liegt das ich immer einen Fehler bekomme wenn ich schreiben oder lesen will?
Hab ich noch irgendwas vergessen was wichtig ist?
Ich hab so langsam keine idee mehr woran es liegen könnte

Danke für die mühe
ALFA
-
Nur zur Sicherheit würde ich mal auf
void User::Update(){ assert(this!=0); ltime=time(<ime); }testen.
-
Ne, ist vorhanden, habs mal eingebaut.
In ner anderen Funktion die den gleichen Fehler verursacht hat wird ja auch ein korrekter zeiger auf den Wert zurück gegeben, wenn ich aber statt dessen versuche den Wert direkt zurück zugeben scheitert das.
Bin grade etwas verwirrt weil offensichtlich innerhalb von der Funktion main die sowohl den array angelegt hat als auch die Funktionen aufruft offensichtlich den Wert der Variable, wenn man ihr den Zeiger auf eine solche gibt, lesen kann, die Funktion in der Klasse aber selber nicht.
Das sollte doch eher anderst rum sein, wenn die Variablen privat sind, oder?
-
Ok, ich hab das Problem jetzt gelöst, trotzdem gefällt es mir nicht

time_t* Update2(){ return <ime; }und in der main:
*ltime=wert;Ist aber eigentlich nicht der sinn das eine Classe nicht auf die eigenen Werte zugreifen kann sondern nur die Main funktion, oder?
Solangsam bin ich verwirrt, vorallem weil es bei der init funktion doch auch geht ...
die sieht etwa so aus:
void User::Init(int i,TCPsocket sck){ socket=sck; game=i; other=false; }
-
In der main erzeuge ich einen array mit der class.
sollte kein problem sein oder doch?
soll ich mal den ganzen quellcode posten?
oder kann mir niemand helfen?
ich meinde das sollte ja wohl anderst funktionieren!