C++ listes et des pointeurs
Je suis en train de travailler sur les devoirs et je voulais savoir ce que c'est réellement définie comme:
list < NAME > * m_ofList
Où le nom vient d'un struct
comme suit:
typedef struct name
{
int age;
int height;
} NAME;
Je veux savoir ce que c'est donc je sais comment insérer ou d'accès: push_back
, insert
, etc.
Donc, je comprends maintenant, mais je suis coincé à cause d'un certain type d'accès à la mémoire: il se produit une erreur de segmentation et j'ai été incapable de le comprendre.
Où dois-je besoin d'initialiser ma nouvelle liste? il ne fonctionne pas dans le constructeur ou dans les fonctions. Juste pour info, c'est une liste privée de sorte qu'il peut être utilisé uniquement pour les fonctions de membre (c'est à dire m_ofList). Je peux produire un code si quelqu'un souhaite aider...
list < NAME > * m_ofList
et que struct
ne vient pas de la personne qui enseigne vous C++?Et pourquoi
typedef struct
pour le C++ ?il ne vient pas de moi, donc je ne pense pas que je peux le changer...
OriginalL'auteur guy_without_a_name | 2012-06-03
Vous devez vous connecter pour publier un commentaire.
En supposant
using namespace std
ouusing std::list
, c'est un pointeur vers une liste d'objets de la classe/struct NOM. Mettre des objets, tout d'abord, vous devez l'initialiser:ou:
Alors vous pouvez mettre des objets:
Si vous êtes allé avec alloue dynamiquement la liste avec
new
, il doit être correctement éliminés lorsque vous avez fini avec elle:Ma question pour vous est, pourquoi est-il un pointeur en premier lieu? Vous pourriez simplement déclarer (comme vous) comme ceci:
Alors vous n'auriez pas à vous soucier de le mettre au rebut. Il serait pris en charge par les règles de portée.
J'aurais besoin de voir un exemple plus complet. De préférence, complètement terminée.
Vous obtenez des erreurs de segmentation lorsque vous essayez d'accéder à la mémoire invalide endroits. Pouvez-vous utiliser un débogueur et de nous montrer votre trace?
Programme du signal reçu EXC_BAD_ACCESS, ne Pouvait pas accéder à la mémoire. Raison: 13 à l'adresse: 0x0000000000000000 0x0000000100001f5b dans CGraph::AddEdge ()
Quand j'ai dit "exemple complet", je faisais allusion à votre code, pas le message d'erreur, désolé pour la confusion.
OriginalL'auteur Benjamin Lindley
Quel que soit le type de données que vous avez choisi de garder dans votre liste, les fonctions de membre restera le même.
La Documentation concernant ce membre de fonctions que vous pouvez appeler la liste STL conteneur peut être trouvé ici.
Vous pouvez créer des listes de contenir tout type de données, car ils sont construits avec une construction connue en tant que modèles. Sont des modèles que vous permettent de créer des listes de différents types de données.
Exemple:
OriginalL'auteur Trevor Hickey
En C++, qui est le plus probablement une Liste STL. Vous pouvez trouver la documentation ici: http://www.sgi.com/tech/stl/List.html
OriginalL'auteur user1431841
C'est un
STL list
qui est une liste de variables, struct ou des objets. Il prend en charge Insérer, supprimer l'opération à n'importe quelle position.Danslist < NAME > * m_ofList
m_oflist est un pointeur vers une liste de noms d'objets. voici un bon tutoriel sur Liste STL.OriginalL'auteur Eight