ça fait maintenant 2 jours que je suis bloqué là-dessus et je commence à en avoir marre *soupir*... du coup je viens voir si pourrais obtenir de l'aide ici
Contexte : Je suis pas très bon en C++ mais j'ai un projet à faire sur une Nucleo STM32F401RE sous Mbed. Une partie du code doit se contenter de lire le contenu d'un classeur CSV et traiter des infos. Je n'ai pas encore le matériel pour mettre le CSV sur la nucleo, donc je le simule avec un flux créé à partir d'une string (CSVCONTENT)
Problème : J'ai récupéré un super code sur StackOverflow pour traiter les flux CSV ici et j'ai ma classe Scenario qui a un (pointeur sur) CSVIterator en attribut. Je peux afficher sans problème le contenu de celui-ci, mais dès que je fais appel à l'opérateur ++, l'appel à std::getline dans CSVRow::readNextRow résulte en une erreur de segmentation... Mais si je reproduit le même comportement avec un CSVIterator qui se trouve directement dans le main, j'ai aucun problème. Je n'arrive pas à voir d'où peut venir l'erreur...
Dans une classe, sauf pour raison d'ambiguité, tu n'as pas besoin pas besoin d'utiliser le pointeur this.
Et pourquoi ne fais-tu pas une instanciation automatique de ton itérateur ? Ca t'évitera les casse tête des multiple déréférencement, et ce sera plus lisible (en plus tu as une belle fuite de mémoire).
PS: En C++ moderne, l'utilisation de l'opérateur new est une pratique en voie de disparition, on préfère s'en passer autant que possible. La librairie standard nous offre suffisamment d'outils pour cela (les pointeurs intelligents entre autre).
Désolé ça faisait trop longtemps que j'avais pas codé en C++, j'ai effectivement codé un peu bizarrement..
J'ai testé avec des smart pointeur mais j'obtenais la même erreur de segmentation. En fait je voulais un pointeur pouvoir l'initialiser dans le constructeur et pas la liste d'initialisation pour pouvoir tester correctement si je selectionne le flux du fichier ou de la string. Mais bon quand j'y repense, ce test devrait être fait en amont parce que c'est pas l'objectif de la classe Scenario.
Correction : Ne pas utiliser de pointeur et faire l'instanciation automatiquement via la liste d'initialisation
En bref j'ai juste codé un peu avec le c*l x) désolé pour ça et merci de ton aide
case closed
Si je suis tête en l'air, c'est par habitude de viser le sommet
[Segmentation Fault] std::getline
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.