2011-03-01 3 views
2

Ceci est mon premier message dans n'importe quel forum alors s'il vous plaît ours avec moi. J'écris un programme C++ qui utilise une classe personnalisée 'Book' avec des variables membres telles que le titre, l'auteur et d'autres variables stockées dans des chaînes. Parmi ces variables membres est un vecteur pour stocker des objets de type Review (qui est une autre classe personnalisée). Maintenant, dans mon fichier de pilote (où le main() est situé) doit accéder à ce vecteur (le vecteur Reviews dans chaque objet Book) et apporter des modifications à celui-ci. Je me suis rendu compte que j'ai besoin d'utiliser un pointeur de type vecteur (par exemple vector pointerName ). J'ai donc ajouté une autre variable membre à la classe Books qui est un pointeur. Le problème auquel je fais face est de pointer ce pointeur vers le vecteur. Où puis-je faire cette affectation? J'ai essayé de le dé-référencer et de le pointer vers le vecteur dans le constructeur par défaut de l'objet, mais cela provoque le blocage de mon programme au moment de l'exécution sans lancer d'exception. La ligne que j'ai placée dans le constructeur est * pointer = vector_of_reviews;Affectation de pointeur C++ (pointer vers un vecteur)

Je suis nouveau dans ce forum et j'apprends encore comment publier des posts ici, alors s'il vous plait gardez-moi si j'ai fait une erreur dans mon post ou si je n'étais pas clair ou insuffisant avec mes informations. S'il vous plaît laissez-moi savoir si j'ai besoin de poster ou de dire quelque chose de plus pour rendre ma position claire.

Merci.

+1

Vous voulez probablement 'pointer = & vector_of_reviews'. '* pointer = vector_of_reviews' copie' vector_of_reviews' là où le pointeur pointe actuellement, ce qui est assez aléatoire et susceptible de provoquer un SIGSEGV ou un équivalent OS. –

+0

Stackoverflow n'est pas vraiment un forum par exemple, mais un site de questions et réponses. –

+0

@Tony - Merci pour votre solution. Alex (voir les réponses ci-dessous) a eu le même conseil. Et ça a marché aussi. – blazethesinner

Répondre

6

Pour affecter un pointeur à «pointer vers» une instance d'un objet, utilisez pointer = &vector_of_reviews.

L'opérateur & obtient l'adresse de quelque chose, et c'est ce que vous voulez affecter au pointeur. Déréférences le pointeur (obtient l'objet réel 'pointé vers'). Cela plantage plus que probablement si le pointeur doit encore être initialisé. Si le pointeur était valide cela effectuerait une assignation de valeur, c.-à-d. invoque l'opérateur d'affectation de la classe de vecteurs.

+0

merci pour votre solution. il a semblé cliquer juste en place. C'est un de ces oublis stupides qu'on fait quand on code après une longue journée. – blazethesinner

Questions connexes