Définir un itérateur NULL avec pgCC

Définir un itérateur NULL avec pgCC - C++ - Programmation

Marsh Posté le 19-04-2005 à 10:28:30    

Bonjour,
 
Je continue mes périgrinations dans l'utilisation de pgCC ;)
 
J'aurais à ce sujet une toute petite question. J'ai une syntaxe du type :
 

Code :
  1. // fichier main.C
  2. #include <list>
  3. ...
  4. using namespace std;
  5. ...
  6. list<int>::iterator itint;
  7. ...
  8. itint = NULL
  9. ...


 
Le fait de mettre cet itérateur à NULL passe très bien sous Linux avec g++. Mais pas avec le compilateur portland ou la commande :
 

Code :
  1. pgCC -c main.C


 
renvoie le message d'erreur :
 

Code :
  1. Allocator>::iterator::iterator(std::list<T, Allocator>::__link_type)
  2.           [with T=int, Allocator=std::allocator<int>]" is inaccessible
  3.     itint = NULL;
  4.             ^
  5. 1 error detected in the compilation of "main.C".


 
Sauriez vous si ce message est normal par rapport à la norme du C++ ? En fait, est-il possible d'imposer la valeur d'un itérateur à NULL dans un programme C++ ?

Reply

Marsh Posté le 19-04-2005 à 10:28:30   

Reply

Marsh Posté le 19-04-2005 à 10:33:09    

euh t'essaies de faire quoi là ? parce ce que tu cherches à faire n'a pas de sens.

Reply

Marsh Posté le 19-04-2005 à 10:35:08    

je crains que le monsieur ne vienne du monde java/c# [:pingouino]


---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 19-04-2005 à 10:40:33    

En fait, le programme que j'écris est plus complexe.
Cet itérateur est un membre d'une classe et j'essaie, au cours de l'éxécution, de savoir s'il pointe ou non vers un entier. C'est à dire de savoir si, oui ou non, mon itérateur me permet d'accéder à cet entier (pour faire simple).
Ce que tu me dis, c'est qu'il y a plus propre comme syntaxe pour réaliser ce genre d'opérations et que la mienne n'est pas correcte ?

Reply

Marsh Posté le 19-04-2005 à 10:41:13    

Pourquoi java/c# (ce qui n'est pas le cas) ?
C'est une syntaxe qu'on y rencontre ?

Reply

Marsh Posté le 19-04-2005 à 10:41:36    

un itérateur, s'il est différent de son_conteneur.end() et si t'as pas foiré, pointe toujours vers un élément du type de ce que contient son_conteneur

Reply

Marsh Posté le 19-04-2005 à 10:51:13    

Citation :


 
un itérateur, s'il est différent de son_conteneur.end() et si t'as pas foiré, pointe toujours vers un élément du type de ce que contient son_conteneur
 


 
Ah, ok. Je connaissais ce principe (heureusment d'ailleurs ;) ) mais je pensais qu'il s'appliquait également au pointeur NULL, vu que cette syntaxe était acceptée par Visual C++ (ce qui n'est peut-être pas une référence) mais aussi g++ avec les options ansi et pedantic (ce qui est plus étonnant d'après ce que tu dis).

Reply

Marsh Posté le 19-04-2005 à 12:35:54    

nathan_g a écrit :

Citation :


 
un itérateur, s'il est différent de son_conteneur.end() et si t'as pas foiré, pointe toujours vers un élément du type de ce que contient son_conteneur
 


 
Ah, ok. Je connaissais ce principe (heureusment d'ailleurs ;) ) mais je pensais qu'il s'appliquait également au pointeur NULL, vu que cette syntaxe était acceptée par Visual C++ (ce qui n'est peut-être pas une référence) mais aussi g++ avec les options ansi et pedantic (ce qui est plus étonnant d'après ce que tu dis).


mais non.  
pour un tableau tab[N] l'iterateur de fin c'est tab+N (past-the-end toujours), pas NULL  :o  

Reply

Sujets relatifs:

Leave a Replay

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