Segmentation fault bei std:vector (privater Member)
-
Hi!
Ich hab das Problem, dass ich ein "Segmentation fault" bekomme, sobald ich auf einen std:vector zugreife, der als privater Member in meiner Klasse definiert ist. Der vector wird nicht besonders initialisiert, ist jedoch von einem Typ einer Klasse, die ich selbst geschrieben habe. Der Konstruktor der Klasse des typs ist Standard.
Wenn ich den Vektor kanz normal im Code anlege, und auf ihn zugreife, gibt es keine Probleme.Also. Das geht ohne Probleme:
KlasseB objektB; vector<KlasseB> VektorA; VektorA.push_back(objektB);Aber das erzeugt einen Segfault:
Definition "KlasseC" (KlasseC.h):
#include <vector> #include "KlasseB.h" using namespace std; #pragma once class KlasseC { public: KlasseC(); ~KlasseC(); void TestFunktion(); private: vector<KlasseB> VektorA; };Deklaration "KlasseC" (KlasseC.cpp):
#include "KlasseC.h" KlasseC::KlasseC() { } KlasseC::~KlasseC() { } void KlasseC::TestFunktion() { KlasseB objektB; VektorA.push_back(objektB); }Definition "KlasseB" (KlasseB.h):
class KlasseB { public: KlasseB(); ~KlasseB(); };Muss der std:vector irgendwie besonders initialisiert werden, wenn er als privater Member deklariert wird? Ich dachte bisher nicht, dass das so ist.
Wäre für Hilfe sehr dankbar!
Danke! Christoph
-
zeigt uns ein int main()... MINIMAL-Beispiel das kompiliert UND explodiert, dann wird dir sehr schnell geholfen
-
#include "KlasseC.h" using namespace std; int main() { KlasseC test; test.TestFunktion(); }
-
Warum postest du in das C-Forum? Warum nicht in das C++ Forum?
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (alle ISO-Standards) in das Forum C++ (alle ISO-Standards) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
theta schrieb:
Warum postest du in das C-Forum? Warum nicht in das C++ Forum?
Tut mir leid. War keine Böse Absicht. Ich weiß, dass das C++ ist. Nicht C.
-
Dann zeigst du jetzt mal das Programm, das sich übersetzen lässt und abstürzt und nicht diesen zusammengklöppelten Mist.
-
Ja, genau. Mach ein Testprojekt das nur aus der main.cpp besteht, keine weiteren Files, das sich übersetzen lässt und beim Starten dann crasht.
Dieses Programm kürzt du soweit zusammen wie möglich - also alles raus was nicht dazu führt dass der Fehler verschwindet.Den Inhalt dieser so erstellten main.cpp postest du dann hier. 1:1, unbearbeitet, per Copy & Paste aus der IDE hier reinkopiert (natürlich in Code-Tags).
Die Chancen dass wir dir dann in kürzester Zeit sagen können was der Grund für den Crash ist (=was dein Programm falsch macht), sind sehr gross. Vorausgesetzt der Code ist wirklich so einfach wie du es hier darstellst.