Wie funktioniert diese Struktur

Warum geht das nicht

struct Structure {
    string _var;
}

Structure[] structure;

function addStructure(string _var) {
    Structure _s = Structure(_var);
    ->> structure.push(_s);
}

während dies funktioniert

struct Structure {
    string _var;
}

Structure[] structure;

function addStructure(string _var) {
    X
    ->> structure.push(Structure(_var));
}

Ich habe das in einem Tutorial gesehen, aber es funktioniert nicht für mich. Danke für die Erklärung!

Welchen Fehler bekommst du?

Antworten (1)

Versuchen Sie es mit dem Schlüsselwort memory:

struct Structure {
    string _var;
} 

Structure[] structure;

function addStructure(string _var) {
    Structure memory _s = Structure(_var);
    structure.push(_s);
}

So wie Sie es geschrieben haben, wurde _s als Verweis auf den (permanenten) Speicher interpretiert. Der Compiler erlaubt keine implizite Konvertierung der temporären Speichervariablen in eine Speicherreferenz. Der Push kopiert die Speicherreferenz in das Array der permanenten Struktur.

Vielen Dank, das hat es gelöst und mir einen Tipp gegeben, wo ich suchen muss!