Ver Mensaje Individual
  #10 (permalink)  
Antiguo 23/01/2011, 07:36
xonil
 
Fecha de Ingreso: enero-2006
Mensajes: 76
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: acceso a miembros privados

Cita:
Iniciado por nup_ Ver Mensaje
Hola:

Xonil, acabo de probar este código con g++ 4.4.3 y funciona correctamente.
Código C++:
Ver original
  1. #include <string.h>
  2. #include <iostream>
  3. //#include <conio.h>
  4. #include<vector>
  5.  
  6. using namespace std;
  7.  
  8. class complejo
  9. {
  10. private:
  11.     double real;
  12.         double imag;
  13.  
  14. public:
  15.     complejo(double real, double imag);
  16.         complejo (): real(0),imag(0){}
  17.     void establecer(double, double);
  18.         void imprimir();
  19.     void agregar(complejo);
  20.     void agregar(double, double);
  21. };
  22.  
  23. complejo::complejo(double real, double imag)
  24. {
  25.     this->real=real;
  26.         this->imag=imag;
  27. }//fin del constructor con parametros
  28.  
  29. // metodos de la clase complejo
  30. void complejo::establecer(double r, double i)
  31. {
  32.     real=r;
  33.         imag=i;
  34. }//fin de establecer
  35.  
  36. void complejo::imprimir()
  37. {
  38.     cout << "el numero es "<< real << " + " << imag << "i" << endl;
  39.  
  40. }//fin de imprimir
  41.  
  42. void complejo::agregar(complejo a)
  43. {
  44.    real=real+a.real;
  45.    imag=imag+a.imag;
  46. }//fin de agregar
  47.  
  48. void complejo::agregar(double a, double b)
  49. {
  50.     real= real + a;
  51.         imag= imag + b;
  52. }
  53.  
  54.  
  55. int main(int argc, char* argv[])
  56. {
  57.    complejo c1,c2,c3;
  58.    vector<complejo>miComplejo;
  59.    vector<complejo>::iterator it;
  60.  
  61.    c2.establecer(2,1);
  62.    c1.establecer(3,3);
  63.    c3.establecer(4,6);
  64.  
  65.    c1.imprimir();
  66.    c2.imprimir();
  67.    c3.imprimir();
  68.  
  69.    miComplejo.push_back(c1);
  70.    miComplejo.push_back(c2);
  71.    miComplejo.push_back(c3);
  72.  
  73.  
  74.    cout << miComplejo.size();
  75.  
  76.    for (it=miComplejo.begin();it!=miComplejo.end();it++)
  77.    {
  78.        it->imprimir();
  79.    }
  80.    
  81.    return 0;
  82.  
  83. }//fin del main

La salida q dá es esta:
nupser@homepc:/tmp$ g++ a.cpp
nupser@homepc:/tmp$ ./a.out
el numero es 3 + 3i
el numero es 2 + 1i
el numero es 4 + 6i
3el numero es 3 + 3i
el numero es 2 + 1i
el numero es 4 + 6i

si te fijas no es solamente cambiar
Código C++:
Ver original
  1. (*it)->imprimir()
por
Código C++:
Ver original
  1. it->imprimir()

sino cambiar TODA LA LÍNEA:
Código C++:
Ver original
  1. cout << (*it)->imprimir() << endl;
por
Código C++:
Ver original
  1. it->imprimir();
;

eso es porque imprimir() es un método void, es decir no devuelve nada, cout está esperando un parámetro y le estás pasando un método q no retorna nada. Por eso es el error.

saludos;

Nup_
gracias Nup_ sabia donde postear :)

efectivamente, no tenia sentido lo que yo ponia, un cout que recibia otro cout, o un cout que recibia un void, osea nada o vacio.

ahora ya puedo seguir progresando con la biblioteca estandar.