C++ - Listen und Zeiger
Ich arbeite an den Hausaufgaben und wollte wissen, was das eigentlich ist definiert als:
list < NAME > * m_ofList
Wo der name kommt von einem struct
etwa so:
typedef struct name
{
int age;
int height;
} NAME;
Ich will wissen, was es ist, damit ich weiß, wie Sie einfügen oder darauf zugreifen: push_back
, insert
, etc.
Also verstehe ich das jetzt, aber ich bin stecken, weil der irgendeine Art von Zugang zum Speicher: es erzeugt einen segmentation fault und ich war nicht in der Lage, um dies herauszufinden.
Wo muss ich initialisieren meiner neuen Liste? es funktioniert nicht im Konstruktor, oder in den Funktionen. Nur zur info, es ist eine private Liste, also kann es nur verwendet werden, für die Funktionen (also m_ofList). Ich kann produzieren code, wenn jemand Lust hätte zu helfen...
list < NAME > * m_ofList
und dass struct
kam nicht von der person, die Lehre, die man C++?Und warum
typedef struct
für C++ ?es kam nicht von mir, also ich glaube nicht, dass ich es ändern können...
InformationsquelleAutor guy_without_a_name | 2012-06-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt
using namespace std
oderusing std::list
, das ist ein Zeiger auf eine Liste von Objekten der Klasse/struct NAME. Setzen von Gegenständen, zuerst müssen Sie es initialisieren:oder:
Dann können Sie legen Sie die Artikel in es:
Wenn Sie ging mit dynamische Zuweisung von der Liste mit
new
, muss es ordnungsgemäß entsorgt werden, wenn Sie fertig sind:Meine Frage an dich ist, warum ist es ein pointer in den ersten Platz? Sie konnte nur erklären, sondern Sie (wie Sie sollten), wie diese:
Dann würden Sie nicht haben, um über sorgen mit der Entsorgung. Es würde sich gekümmert werden, indem scoping-Regeln.
Ich brauchen würde, um zu sehen, ein vollständigeres Beispiel. Vorzugsweise komplett abgeschlossen.
Sie erhalten segfaults, wenn Sie versuchen, Zugriff auf ungültige Speicherbereiche. Können Sie einen debugger verwenden, und zeigen Sie uns Ihre backtrace?
Program received signal EXC_BAD_ACCESS, Konnte nicht auf den Speicher zugreifen. Grund: 13 unter der Adresse: 0x0000000000000000 0x0000000100001f5b in CGraph::AddEdge ()
Als ich sagte "komplettes Beispiel", meinte ich zu Ihr code, nicht die Fehlermeldung, sorry für die Verwirrung.
InformationsquelleAutor Benjamin Lindley
Unabhängig von der Daten-Typ, den Sie wählte, um zu halten Sie in Ihrer Liste, die member-Funktionen wird gleich bleiben.
Dokumentation über das, was member-Funktionen, die Sie aufrufen können, für die STL Liste container gefunden werden kann hier.
Sie können Listen erstellen, die halten keine Daten geben, weil Sie mit einem Konstrukt, bekannt als Vorlagen. Vorlagen können Sie erstellen Listen von verschiedenen Arten von Daten.
Beispiel:
InformationsquelleAutor Trevor Hickey
In C++, das ist wahrscheinlich eine STL-Liste. Sie finden die Dokumentation hier: http://www.sgi.com/tech/stl/List.html
InformationsquelleAutor user1431841
Es ist ein
STL list
was ist ein Verknüpfte Liste von Variablen, Struktur oder Objekte. Es unterstützt Einfügen, löschen Betrieb an einer beliebigen position.Inlist < NAME > * m_ofList
m_oflist ist ein Zeiger auf eine Liste von Namen von Objekten. hier ist ein gutes tutorial auf STL-Liste.InformationsquelleAutor Eight