2017-07-17 1 views
0

Ich bin ein Java-Entwickler und ich bekomme einige Probleme in meinem Code.JSON Boost, Segmentierung Fehler Karte zu einem anderen lesen

Ich bearbeite meine Jobliste basierend auf einem JSON. Basierend auf dem Bild erhalte ich erfolgreich alle Daten von JSON. Das Problem ist, dass ich innerhalb der Klasse Job eine Map habe, in der ich alle Operationen des Jobs ablege.

Also, in Zeile 60 überprüfe ich, ob das Array der Operation aus dem JSON nicht leer ist, dann beginne ich es zu erstellen und zu einer lokalen Karte hinzuzufügen.

Der Segmentierungsfehler tritt auf: 1 - wenn ich versuche, die lokale Karte meiner Objektkarte zuzuweisen (wie in Zeile 73 deklariert).

2 -, wenn ich versuche, um direkt den neuen Betrieb zu meinem Objekt Karte zuordnen wie folgt:

jobs[id]->operations[opName] = new Operation(idOp, id, starting); 

enter image description here

EDIT: nur um zu zeigen, dass ich außerhalb der, wenn bewegte. enter image description here

Antwort

0

Zeile 61, erklären Sie die Karte operations, aber das ist innerhalb Ihre if Anweisung (Zeile 60), so dass es außerhalb des Bereichs vor dem Code geht erreicht Leitung 72

Sie müssen sich bewegen die Deklaration Ihrer lokalen Karte außerhalb der if.

+0

ops, war ich mehr Material in den Code versehentlich hinzugefügt. Jetzt habe ich getan, was du vorgeschlagen hast! Bild 2 überprüfen! – WillEnsaba

+0

Außerdem ist es in Zukunft besser, den Code zu kopieren und einzufügen, anstatt Screenshots zu verwenden. – TriskalJM

+0

Entschuldigung. Ich kann es hinzufügen, wenn Sie wollen! – WillEnsaba

0

Ich habe es getan ... könnte mir jemand erklären, warum es nicht funktionierte?

Was ich tat, war, zu beheben:

ich die Karte nur eine Methode innerhalb der Klasse hinzugefügt erhalten. Innerhalb der Klasse weise ich den Wert zu (wie ein Setter).

Am Parser passiere ich die Karte als Wert

jobs[id]->addOperations(operations); 

dann innerhalb der Klasse Job

void Job::addOperations(map<string, Operation*> operations) { 
    this->operations = operations; 
}