Friend & Surcharges

Friend & Surcharges - C++ - Programmation

Marsh Posté le 10-08-2003 à 11:45:59    

Bonjour à tous.
 
Le bout de code ci dessous ne fonctionne pas sous vc++6. Il me renvoie 7 erreurs. :/
Telle que :
error C2248: 'sz' : cannot access private enumerator declared in class 'IntArray' et autres du même genre, ainsi que operator >>' is ambiguous (idem pour << )
On pourrait me dire pourquoi ? (les fonctions sont bien définies en tant que friend pourtant!)
 

Code :
  1. #include <iostream>
  2. #include <sstream>
  3. #include <cstring>
  4. using namespace std;
  5. class IntArray {
  6. enum { sz = 5 };
  7. int i[sz];
  8. public:
  9. IntArray() { memset(i, 0, sz* sizeof(*i)); }
  10. int& operator[](int x) { return i[x]; }
  11. friend ostream& operator<<(ostream& os, const IntArray& ia);
  12. friend istream& operator>>(istream& is, IntArray& ia);
  13. };
  14. ostream& operator<<(ostream& os, const IntArray& ia) {
  15. for(int j = 0; j < ia.sz; j++) {
  16. os << ia.i[j];
  17. if(j != ia.sz -1)
  18. os << ", ";
  19. }
  20. os << endl;
  21. return os;
  22. }
  23. istream& operator>>(istream& is, IntArray& ia){
  24. for(int j = 0; j < ia.sz; j++)
  25. is >> ia.i[j];
  26. return is;
  27. }
  28. int main() {
  29. stringstream input("47 34 56 92 103" );
  30. IntArray I;
  31. input >> I;
  32. I[4] = -1; // Use overloaded operator[]
  33. cout << I;
  34. }


 
Voilà, merci..

Reply

Marsh Posté le 10-08-2003 à 11:45:59   

Reply

Marsh Posté le 10-08-2003 à 11:55:06    

je viens de faire un copier/coller de ton code dans vc6 et aucun probleme, juste un warning parce que le main ne retourne rien.
 
 
comme sortie, j'ai  
47, 34, 56, 92, -1

Reply

Marsh Posté le 10-08-2003 à 11:58:10    

cherche pas trop c un bug de chez crosoft moi aussi jai eu le meme probleme  :fou:  
 
faut installer le service pack vc6 ou ne pas utiliser namespace std avec friend et loperateur <<

Reply

Marsh Posté le 10-08-2003 à 11:59:24    

arf oké, merci. :)

Reply

Marsh Posté le 10-08-2003 à 11:59:52    

Reply

Marsh Posté le 10-08-2003 à 12:03:14    

Ahhh, merci beaucoup redfaction !  :jap:

Reply

Sujets relatifs:

Leave a Replay

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