Problem mit Array in Konstruktor
-
Ozzy schrieb:
Aber wie kann ich nun etwas in die Array einfügen? Mein Compiler sagt mir immer:
[...]Hm. Ich frage mich grad ob das ein Fortschritt oder Rückschritt gegenüber den Leuten die keine Fehlermeldungen liefern ist.
// Automat.hpp class Automat { //... std::vector<int> Qa; std::vector<std::vector<int> > Delta; }; // Automat.cpp using std::vector; Automat::Automat(const int k1, const int m1, const int n1) : k(k1) , m(m1) , n(n1) , Qa(m1) , Delta(n1, vector<int>(2)) { /* Das sind lokale Variablen, nicht deine Member! int k=k1; int m=m1; int n=n1; int Qa[m]; int Delta[n][2]; */ };
-
Die Anzahl der Array-Elemente muss ein konstanter Ausdruck sein.
Für eine dynamische Speicherverwaltung benutze lieber vektoren oder halt Pointer auf Arrays.
-
Also kein Array sondern lieber Verktoren; sehe ich das richtig?
Schade, dabei wäre es mit Array's so schön gewesen...Noch eine Frage: wie schreibe ich denn in einen Vektor in einem Vektor? So etwas habe ich noch nie gemacht...
MfG, Ozzy
-
Hallo
std::vector<std::vector<int> > myarray; // Leerzeichen zwischen den > > beachten! myarray.push_back(std::vector<int>());bis bald
akari
-
Dann muss ich mir also einen "Hilfsvektor" bauen, den vollmachen, und dann den ganzen Vektor in den "äußeren" Vektor schieben?
MfG, Ozzy
-
typedef std::vector<int> Int1D; typedef std::vector<Int1D> Int2D; Int2D nullmatrix(10, Int1D(10,0)); // bzw. for (int i = 0; i < nullmatrix.size(); i++) { for (int j = 0; j < nullmatrix[i].size(); j++) nullmatrix[i][j] = 1; }
-
Automat::Automat(const int k1, const int m1, const int n1) : k(k1) , m(m1) , n(n1) , Qa(m1) , Delta(n1, vector<int>(2)) // <--- erstellt ein n1*2 Array { };
-
Hi,
kann mir jemand von Euch sagen, warum das (anscheinend) nicht funktioniert:
void Automat::Automat::insertDelta(Automat *automat, vector<int> Zustand) { automat->Delta.push_back(Zustand); };Zumindest hatte ich probiert, mit:
void Automat::ausgeben(Automat *automat) { cout << automat->Delta[0][0] << " " << automat->Delta[0][1] << " " << automat->Delta[0][2] << endl << endl; };mir etwas ausgeben zu lassen, aber ich bekomme immer nur 0 0 0 raus. Der Vector Zustand wir der insertDelta aber richtig übergeben, das hatte ich schon ausprobiert.
MfG, Ozzy
-
Kannst du sagen, warum du innerhalb von Automat offenbar noch einen Typ Automat hast? Und warum offenbar alle deine Memberfunktionen auf dem übergebenen Automat-Zeiger arbeiten statt auf this?
-
Nein, das kann ich Dir leider nicht sagen

Aber ist das eine Erklärung für die Frage?
MfG, Ozzy
-
Wie sieht denn dein tatsächlicher Code jetzt aus? Und warum weißt du nicht was du machst?
-
Hi,
Scherz beiseite, ich hatte einfach nicht dran gedacht. Nun habe ich this-> statt automat-> genommen, aber das löst nicht mein Problem. Hast Du vielleicht noch eine Idee?
MfG, Ozzy
-
Hi,
ich habe es jetzt selbst herausgefunden; ich dachte, ich müsse ein push_back auf dem Vektor ausführen, deshalb wurden meine Elemente immer nur hinten dran gehängt, und somit kam natürlich bei der Abfrage der ersten Elemente immer nur 0 0 0 raus.
Mit der Zuweisung aber funktioniert es jetzt.Trotzdem vielen Dank, Ozzy