Zeigerproblem (kein Compilerfehler) in QtÜbung [close]
-
wit schrieb:
es klappt nicht... Würdet ihr mir bitte nochmal helfen, warum der Zeiger diesmal wieder nicht richtig initialisiert und ich "Segmentation fault" erhalte?
Wenn du uns nochmal den kompletten reduzierten Code zeigst. Ist etwas mühsam sich die einzelnen Codebrocken und alle Änderungen daran aus den letzten Seiten zusammenzukratzen

-
ok klar Moment...
ich nehme jetzt mal nur eine Klasse sieht ja alles gleich aus...Startfenster.h
class Startfenster : public QDialog { ... public: explicit Startfenster(Registration *inRegis, QWidget *parent = 0); ~Startfenster(); public: void ini(); ... private: Ui::Startfenster *ui; Registration *Regi; };Startfenster.cpp
... Startfenster::Startfenster(Registration *inRegis, QWidget *parent) : QDialog(parent), ui(new Ui::Startfenster), Regi(inRegis) { ui->setupUi(this); } ... void Startfenster::ini() //braucht man glaube ich zwar nicht, aber der Vollständigkeit halber... { setWindowTitle("Felix"); connect(ui->Registration, SIGNAL(clicked()), this, SLOT(setUpR())); connect(ui->Nachname, SIGNAL(textEdited(QString)), Regi->ui->Nachname, SLOT(setText(QString))); }main steht zwar oben drüber aber auf einen Blick ist vielleicht doch besser... und der Fehler ist bestimmt da, glaub ich *lol
... class Registration *Regis; int main(int argc, char *argv[]) { QApplication app(argc, argv); Startfenster *Start = new Startfenster(Regis); Check *check = new Check(Regis); Registration *Regis = new Registration(Start, check); Start->ini(); //wenn ich die drei Zeilen ausklammer funktionierts :confused: Regis->ini(); //2. check->ini(); //3. Start->show(); return app.exec(); }Greetings
-
komme einfach nicht weiter 3 Wochen mache ich jetzt rum mit dieser * Programmidee -.- Könnte nicht eventuell nochmal wer bitte schauen?
Edit: und ja ich habe mir die Initialisierungslistengeschichte durchgelesen
Es kann aber wieder durchaus sein das mein Talent zugeschlagen hat das Wichtigste zu überlesen... - da bin ich begabt!, muss man ja auch irgendwo sein 
-
pumuckl schrieb:
Wenn du uns nochmal den kompletten reduzierten Code zeigst. Ist etwas mühsam [...]
Und deinen Fehler beschreiben bzw. die Compilerfehlermeldung. Siehe Link in meiner Signatur.
-
ist eigentlich noch immer der Selbe, dache ich hätte... ach egal, ich hab heute einfach schlechten Tag
Fehler, kein Compilerfehler:
Absturzmeldung/Rückgabewert = -1073741819
Debuggermeldung = Segmentation fault
weitere Auffälligkeit: kein Fenster, wenn man aber die oben genannten Zeilen ausblendet bekomme ich einsAnbei ich habe mit dem Debugger versucht den Fehler zu finden ohne Erfolg, wie alles was ich versuche
Edit: Sehe gerade das ich beim ersten Post die IDE- und CompilerAngabe überlesen habe, typisch... QtCreator alles so gelassen wie´s war folglich MinGW-Compiler
achso und der Debugger geht unter Windows auch nicht da müsste ich glaube ich einen runterladen (geht aber eher schlecht bei einer Leitung von 380 KBit oder so. Bisher habe ich dann immer Linux genommen was ich mir die Woche geschrottet habedumme Frage: Geht es nur mir so oder ist programmieren am Anfang einfach zermürbend?
-
QT kenn ich garnicht, aber das sieht ungeschickt aus:
... Startfenster *Start = new Startfenster(Regis); Check *check = new Check(Regis); Registration *Regis = new Registration(Start, check); }Was hat Regis wohl für einen Wert, wenn das Startfenster alloziiert wird?
Und welchen, wenn der Check alloziiert wird?Auf jeden Fall bekommt Regis dann mal einen neuen Wert bei der Registration.
Meckert der Compiler bei der Reihenfolge nicht oder habe ich heute schon zuviel Code gesehen, dass ich was nicht blicke?
Ciao
MM
-
PS: Bin ja blöd, Du hast zwei Regis, einen globalen und einen lokalen. Warum?
-
ehm peinlich, war eigentlich als Art forward declaration gedacht (dachte mir warum soll das nur bei Klassen gehn, klar du hast vollkommen Recht!!), denn ich bekomme sonst folgenden Compilerfehler: 'Regis' was not declared in this scope
Edit: also genau das was du sagtest, aber wie löse ich es dann
-
wit schrieb:
also genau das was du sagtest, aber wie löse ich es dann
Indem du die Reihenfolge änderst und das zuerst definierst, was die anderen beiden brauchen?
Das sieht aus, als solltest du erstmal kleiner anfangen, ohne QT und Fensterkrempel, da scheinen die Basics noch nicht so ganz fest zu sitzen.
wit schrieb:
ist eigentlich noch immer der Selbe, dache ich hätte... ach egal, ich hab heute einfach schlechten Tag
Den letzten Code, den du davor gepostet hast, konnte man nicht übersetzen, weil in dem Fall haufenweise Deklarationen/Definitionen von Klassen, usw. fehlen. Wie schon gesagt, keiner hat Lust, sich durch 5 Seiten zu graben und sich die Einzelteile deines Codes zusammen zu suchen...
-
pumuckl schrieb:
wit schrieb:
also genau das was du sagtest, aber wie löse ich es dann
Indem du die Reihenfolge änderst und das zuerst definierst, was die anderen beiden brauchen?
ich bin zwar blöd, aber so blöd nun auch nicht
- nur geht das leider nicht da Registration die 2 anderen Klassen auch im Parameter hat oder andersrum, also wie dann?pumuckl schrieb:
Das sieht aus, als solltest du erstmal kleiner anfangen, ohne QT und Fensterkrempel, da scheinen die Basics noch nicht so ganz fest zu sitzen.
ja du hast Recht ... - Aber nur in der shell zu programmieren ist einem Teenager wie mir halt schnell zu langweilig...
Davon abgesehen kann mein Freund schon Webseiten mit HTML und so programmieren
und ich möchte nicht gar so blöd dastehen
Die Frage ist nur ob ich nicht gleich C++11 lernen bzw. anfangen sollte?pumuckl schrieb:
wit schrieb:
ist eigentlich noch immer der Selbe, dache ich hätte... ach egal, ich hab heute einfach schlechten Tag
Den letzten Code, den du davor gepostet hast, konnte man nicht übersetzen, weil in dem Fall haufenweise Deklarationen/Definitionen von Klassen, usw. fehlen. Wie schon gesagt, keiner hat Lust, sich durch 5 Seiten zu graben und sich die Einzelteile deines Codes zusammen zu suchen...
um gottes Willen das war nicht als Kritik gemeint, hab einfach schlechten Tag...

-
Bin sowieso so unglaublich froh das man sich bei mir Dummerchen überhaupt noch erbarmt zu helfen... Könnte alles voller Danke schreiben
-
Aber nur in der shell zu programmieren ist einem Teenager wie mir halt schnell zu langweilig
Nimms nicht persönlich, aber dann hast du entweder bei C++ oder bei der Programmierung allgemein nichts zu suchen.
Webseiten mit HTML und so programmieren
Vergleichst du grad HTML mit C++? Um genau zu sein hat HTML nichtmal was mit Programmieren zu tun

Die Frage ist nur ob ich nicht gleich C++11 lernen bzw. anfangen sollte?
Wie die andern schon gesagt haben, fang nicht direkt mit Qt an, wenn du mit Begriffen wie Klassen, Instanzen, Objekte, Template, STL, Spezialisierung, Stack, Heap, RAII usw. noch nichts anfangen kannst. Glaub mir, es nützt dir nix, Qt ein bissl zu beherrschen, denn größere Projekte bestehen nur zu einem minimalen Teil aus dem UI und ob du dir die Ausgaben deines Programmes nun mit Qt in einem Fenster oder noch mit der Konsole anzeigen lassen willst ist doch egal.
Schau mal hier im Bücherthread vorbei, besorg dir ein gutes Buch (z.B. den Primer) und lern die Grundlagen. Am Ende wirst du dich drüber freuen

Gruß, Tobi (bin übrigens auch noch Teenager)
-
wit schrieb:
pumuckl schrieb:
wit schrieb:
also genau das was du sagtest, aber wie löse ich es dann
Indem du die Reihenfolge änderst und das zuerst definierst, was die anderen beiden brauchen?
ich bin zwar blöd, aber so blöd nun auch nicht
- nur geht das leider nicht da Registration die 2 anderen Klassen auch im Parameter hat oder andersrum, also wie dann?Sorry, da hab ich zu kurz geschaut. Das sieht nach einem reichlich seltsamen Design aus, wenn da die Klassen gegenseitige Abhängigkeiten haben... Ohne einen Gesamtüberblick zu haben ist da aber schwer durchzuschauen, was jetzt genau falsch ist.
pumuckl schrieb:
Das sieht aus, als solltest du erstmal kleiner anfangen, ohne QT und Fensterkrempel, da scheinen die Basics noch nicht so ganz fest zu sitzen.
ja du hast Recht ... - Aber nur in der shell zu programmieren ist einem Teenager wie mir halt schnell zu langweilig...
Davon abgesehen kann mein Freund schon Webseiten mit HTML und so programmieren
und ich möchte nicht gar so blöd dastehen
Die Frage ist nur ob ich nicht gleich C++11 lernen bzw. anfangen sollte?Also html ist eine Seitenbeschreibungssprache, keine Programmiersprache. Wenn er da nicht gerade mit php und/oder javascript irgendwelche Scripte drin hat ist das kaum Programmierung zu nennen. Als Vergleich: Du versuchst dich hier an Mathematik, weil dein Freund so schön mit Buntstiften malen kann
Und weil das einmaleins so langweilig ist willst dus gleich mit Integralen und Algebra versuchen - das haut nicht hin. Und das was du da machst ist auch C++11, nur dass es dort andere/modernere Techniken gibt. Wie gut die sich aber wiederum mit QT vertragen weiß ich nicht.
-
nö aufgeben ist nichts für mich! Sonst wäre ich nicht schon 1 1/2 Jahre dabei geblieben.
Und ich schätze Ehrlichkeit übrigens sehrDesweiteren habe ich bereits "C++ Kompendium" gelesen, kennt das keiner? und das klärt ziemlich alle Grundlagen ab, mir fehlt die Praxis hauptsächlich, ich weiß die Grundlagen habe aber große Probleme mit der Anwendung.
Ich suche aber durchaus ein gutes deutsches Buch für Grundlagen wie: Vector, Datenverarbeitung über Programmende hinweg, STL da weiß ich wirklich nichts drüber, Container, Algorythmen(oder wie man das schreibt) und ihr wisst sicher was gut für mich wäre
Habe in der Bücherecke leider nur Anfängerbücher für die absoluten Beginner gefunden...B2T: Das war nicht eine Antwort auf meine Fragen.

wie löse ich mein Problem? und soll ich C++11 lernen oder Grundlagen vertiefen? - Von euren Posts her 2. ist eindeutig besserEdit: Pumuckls Post nicht gesehn
Edit: Danke für den Vergleich, aber das hat er durchaus, auch wenn er mit Javascript Schwierigkeiten hat
-
Zusammenfassung:
ja mein Fehler war das sich am Anfang die Klassen gegenseitig im Konstruktor aufrufen, dann hat gero gesagt ini Funktionen, gesagt getan und um die Zeiger zu initialisieren haben wir im Konstruktor pointer auf die andere Klasse gemacht und da sind wir jetzt.
Design lässt sehr zu wünschen übrig, da hast Recht - mangelde Erfahrung/Übung
-
wit schrieb:
soll ich C++11 lernen oder Grundlagen vertiefen?
Definitiv eher Grundlagen vertiefen als die Erweiterungen durch den neuen Standard zu lernen. Das Fundament muss sitzen und zwar fest, bevor du darauf aufbauen solltest (wie man an deinen aktuellen Problemen erkennen kann).
Wie du das erreichst: erstmal etwas einfachere Dinge implementieren. Wenn du die Ausgabe/Anzeige gut von der Programmlogik trennst, kannst du problemlos erstmal die Logik für dein Programm entwickeln mit Konsolenausgabe und später die QT-GUI drüber setzen.
-
ok, ich mache den Post dann mal zu, schade das es nicht funktioniert, aber ich habe ja neue Dinge gelernt wie forward declaration...
Wenn noch jemand ein Buch nach den Kriterien (s.o.) kennt, schreibt es bitte noch.
Danke für die vielen Bemühungen!!!
