Fonction de débug

Fonction de débug - Divers - Programmation

Marsh Posté le 07-09-2010 à 15:04:11    

J'ai dans mon prog une liste d'objets de type A, chacun possédant des objets de type B en attributs, et de même pour B qui possède C, etc
 
Je souhaiterais créer une fonction de debug style "afficher infos", donc par exemple je ferai A.infos() et cette fonction printerait des infos sur A, puis appellerait la fonction infos() sur tous ses attributs de classe B.
B à son tour fait pareil pour elle même et pour ses attributs C.
Ma question est finalement un peu con : y'a t'il un moyen astucieux de gérer l'indentation ? Genre les éléments du niveau 0 ont 0 identation, ceux appellés depuis A, 1, etc...
Ou estc-e que mon idée est globalement pas la bonne?
je suis sous C++ pour infos  :)


Message édité par lezeb2000 le 07-09-2010 à 15:04:26
Reply

Marsh Posté le 07-09-2010 à 15:04:11   

Reply

Marsh Posté le 07-09-2010 à 15:13:27    

Au lieu d'une fonction qui fait le tout, tu fais une fonction qui retourne le contenu à afficher, et une qui l'imprime.
 
De cette manière dans A tu appelles la fonction qui récupère le contenu de B au lieu de l'afficher, et tu l'affiches à la main dans A en rajoutant une indentation devant chaque ligne.
 
Ca doit se faire assez simplement...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-09-2010 à 15:15:27    

Ton truc va pas marcher si je dois afficher plusieurs lignes (genre 1 ligne par attribut)

 

Y'a moyen de faire des tabulations en C++ quand on utilise std::cout ?

Message cité 1 fois
Message édité par lezeb2000 le 07-09-2010 à 15:19:31
Reply

Marsh Posté le 07-09-2010 à 15:19:18    

Tabulation: \t dans les chaines et les constantes de caracteres.
 
Pour gerer l'indentation, j'ai plutot tendance a passer le niveau et a utiliser un manipulateur qui ajoute le nombre desire d'espace en debut de ligne (on peut aussi mettre un

Code :
  1. << std::setw(indent*3) << ""


en debut de ligne plutot que d'ecrire le manipulateur).


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 07-09-2010 à 15:23:10    

lezeb2000 a écrit :

Ton truc va pas marcher si je dois afficher plusieurs lignes (genre 1 ligne par attribut)


Si.
Quand tu retournes les infos tu les retournes sous forme de tableau, et t'affiches ligne par ligne en rajoutant ta tabulation...ou alors tu rajoutes une tabulation après chaque caractère newline dans la chaine retournée...ou alors etc etc.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-09-2010 à 15:26:12    

skeye a écrit :


Si.
Quand tu retournes les infos tu les retournes sous forme de tableau, et t'affiches ligne par ligne en rajoutant ta tabulation...ou alors tu rajoutes une tabulation après chaque caractère newline dans la chaine retournée...ou alors etc etc.


Ah ouais ok j'avais pas vu ça comme ça.
Je pense que je vais juste passer un numéro de d'indentation par défaut à 0 dans la fonction, et que j'incrémente à chaque appel successif...
Du coup ça me permet aussi d'empêcher les récursions infinies

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed