Foros del Web » Programación para mayores de 30 ;) » C/C++ »

por favor ayudenme con este error

Estas en el tema de por favor ayudenme con este error en el foro de C/C++ en Foros del Web. buenas amigos tengo una pequeña duda con mi codigo me sale el siguiente error: "no matching function for call to `coordenada::registrar(std::string&, std::string&, std::string&)' " y ...
  #1 (permalink)  
Antiguo 28/11/2010, 15:34
 
Fecha de Ingreso: septiembre-2010
Mensajes: 16
Antigüedad: 10 años, 9 meses
Puntos: 0
por favor ayudenme con este error

buenas amigos tengo una pequeña duda con mi codigo me sale el siguiente error:

"no matching function for call to `coordenada::registrar(std::string&, std::string&, std::string&)' " y este

"candidates are: void coordenada::registrar(std::string*, std::string*, std::string*) "

y de vderdad no entiendo que significa, estoy usando clases pero como no las entiendo muy bien a lo mejor toy haciendo algo mal, en el programa Simplemente puedes agregar lugares y asociar los lugares a la persona que los registró, en otras palabras yo lo que quiero es saber los N lugares y quien los registró. como ven tengo que guardar los datos de varios usuarios y la unica manera que se me ocurrio es esta,

este es el codigo:
Código C++:
Ver original
  1. #include <cstdlib>
  2. #include <iostream>
  3. #define MAX 50
  4. using namespace std;
  5.  
  6. class coordenada
  7.                 {
  8.                 private:
  9.                        string lugar[MAX];
  10.                        string x[MAX];
  11.                        string y[MAX];
  12.                 public:
  13.                        void registrar(string a[],string b[],string c[]);
  14.                        string mostrar(string ax[],string b[],string c[]);
  15.                 };  
  16.  
  17. void coordenada::registrar(string a[],string b[],string c[])
  18.                             {
  19.                              char op2;
  20.                              do{
  21.                              cout<<"Ingrese nombre del lugar:"<<endl;
  22.                              cin>>a[MAX];
  23.                              this->lugar[MAX]=a[MAX];
  24.                              cout<<"Ingrese coordenada en x:"<<endl;
  25.                              cin>>b[MAX];
  26.                              this->x[MAX]=b[MAX];
  27.                              cout<<"Ingrese coordenada en y:"<<endl;
  28.                              cin>>c[MAX];
  29.                              this->y[MAX]=c[MAX];
  30.                              system("CLS");
  31.                              cout<<"registro exitoso";
  32.                              cout<<"Desea continuar?"<<endl;
  33.                              cout<<"1. no"<<endl;
  34.                              cout<<"1. cualquier otra tecla para continuar"<<endl;
  35.                              cout<<"su opcion fue la numero:";
  36.                              cin>>op2;
  37.                              }while(op2!='1');          
  38.                             };
  39. /*string coordenada::mostrar(string ax[],string b[],string c[])
  40.                                               {
  41.                                              
  42.                                               cout<<this->lugar[a];
  43.                                               cout<< this->x[a];
  44.                                               cout<< this->y[a];
  45.                                                                  
  46.                                               }*/
  47.  
  48.  
  49. class persona
  50.              {
  51.              public:
  52.                     string nombre;
  53.                     long int cedula;
  54.                     string id;
  55.              };
  56.  
  57. void parametros_incorrectos()
  58.                              {
  59.                               system("CLS");
  60.                               cout<<"parametros incorrectos";
  61.                               system("pause>nul");
  62.                               system ("CLS");      
  63.                              }
  64.  
  65. int main(int argc, char *argv[])
  66. {
  67.     //variables
  68.     char op1;
  69.     char op2;
  70.     string ax[MAX];
  71.     string bx[MAX];
  72.     string cx[MAX];
  73.     //--------------------------------
  74.    
  75.   coordenada *Newcoor= new coordenada;
  76.    persona *usuario= new persona;
  77.    
  78.     do{
  79.     system("CLS");
  80.     cout<<"---------------------------REGISTRO DE COORDENADAS------------------------------"<<endl;
  81.     cout<<"Indique accion:"<<endl;
  82.     cout<<"1. Agregar una coordenada al sistema"<<endl;
  83.     cout<<"2. Crear un usuario"<<endl;
  84.     cout<<"3. Salir"<<endl;
  85.     cout<<"su accion seleccionada fue:";
  86.     cin>>op1;
  87.     switch(op1)
  88.                {
  89.                case '1':
  90.                    
  91.                   system("CLS");
  92.                   Newcoor->registrar(ax[MAX],bx[MAX],cx[MAX]);
  93.                   system("pause>nul");  
  94.                break;
  95.                case '2':
  96.                break;
  97.                
  98.                case '3':
  99.                break;
  100.                default:
  101.                       parametros_incorrectos();
  102.                break;
  103.                
  104.                }
  105.    
  106.    
  107.     }while(op1!='3');
  108.     system("PAUSE");
  109.     return EXIT_SUCCESS;
  110. }

nota: se me dijo que debo usar solo clases
  #2 (permalink)  
Antiguo 28/11/2010, 20:26
 
Fecha de Ingreso: junio-2006
Mensajes: 63
Antigüedad: 15 años
Puntos: 0
Respuesta: por favor ayudenme con este error

Hola amigo

Me parece que tu error esta en la linea 92, esta:
Código:
Newcoor->registrar(ax[MAX],bx[MAX],cx[MAX]);
Los parametros de la funcion:
Código:
void coordenada::registrar(string a[],string b[],string c[])
Son vectores de string y ocurre el error cuando les pasas ax[Max] donde le estas pasando un solo string cuando necesita un vector, ademas hay un desbordamiento pues Max es el tamaño maximo del vector y los valores permitidos son de 0...Max-1.

Lo correcto seria:
Código:
Newcoor->registrar(ax,bx,cx);
  #3 (permalink)  
Antiguo 29/11/2010, 17:07
 
Fecha de Ingreso: septiembre-2010
Mensajes: 16
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: por favor ayudenme con este error

si amigo efectivamente el error esta en la linea 92 aunque pruebo con tu recomendacion me da un error y el programa se me cierra, no entiendo que pasa todavia
  #4 (permalink)  
Antiguo 29/11/2010, 17:36
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 11 años, 1 mes
Puntos: 228
Respuesta: por favor ayudenme con este error

No logro entender lo que quieres hacer...podrias explicar que quieres hacer. Porque un String es muy distinto a Char*.
Con string no nacesitas crear un arreglo de string. Simplementes declaras un string asi:

string micadena = "hola";

en cambio con char si necesitas crear un arreglo.
De eso me doy cuanta porque todo string que susas le pones [MAX] a continuacion osea que estas usando un solo string de todos los que utilizaste.

Despues en la funcion registrar para que pasas el a,b,c si despues los que haces es tomarlo de la entrada de teclado.

Código C++:
Ver original
  1. #include <cstdlib>
  2. #include <iostream>
  3. #define MAX 50
  4. using namespace std;
  5.  
  6. class coordenada
  7.                 {
  8.                 private:
  9.                        string lugar;
  10.                        string x;
  11.                        string y;
  12.                 public:
  13.                        void registrar();
  14.                        //string mostrar(string ax[],string b[],string c[]);
  15.                 };  
  16.  
  17. void coordenada::registrar()
  18.                             {
  19.                              char op2;
  20.                              string a,b,c;
  21.                              do{
  22.                              cout<<"Ingrese nombre del lugar:"<<endl;
  23.                              cin>>a;
  24.                              this->lugar=a;
  25.                              cout<<"Ingrese coordenada en x:"<<endl;
  26.                              cin>>b;
  27.                              this->x=b;
  28.                              cout<<"Ingrese coordenada en y:"<<endl;
  29.                              cin>>c;
  30.                              this->y=c;
  31.                              system("CLS");
  32.                              cout<<"registro exitoso";
  33.                              cout<<"Desea continuar?"<<endl;
  34.                              cout<<"1. no"<<endl;
  35.                              cout<<"1. cualquier otra tecla para continuar"<<endl;
  36.                              cout<<"su opcion fue la numero:";
  37.                              cin>>op2;
  38.                              }while(op2!='1');          
  39.                             };
  40. /*string coordenada::mostrar(string ax[],string b[],string c[])
  41.                                               {
  42.                                              
  43.                                               cout<<this->lugar[a];
  44.                                               cout<< this->x[a];
  45.                                               cout<< this->y[a];
  46.                                                                  
  47.                                               }*/
  48.  
  49.  
  50. class persona
  51.              {
  52.              public:
  53.                     string nombre;
  54.                     long int cedula;
  55.                     string id;
  56.              };
  57.  
  58. void parametros_incorrectos()
  59.                              {
  60.                               system("CLS");
  61.                               cout<<"parametros incorrectos";
  62.                               system("pause>nul");
  63.                               system ("CLS");      
  64.                              }
  65.  
  66. int main(int argc, char *argv[])
  67. {
  68.     //variables
  69.     char op1;
  70.     char op2;
  71.     //--------------------------------
  72.    
  73.   coordenada *Newcoor= new coordenada;
  74.    persona *usuario= new persona;
  75.    
  76.     do{
  77.     system("CLS");
  78.     cout<<"---------------------------REGISTRO DE COORDENADAS------------------------------"<<endl;
  79.     cout<<"Indique accion:"<<endl;
  80.     cout<<"1. Agregar una coordenada al sistema"<<endl;
  81.     cout<<"2. Crear un usuario"<<endl;
  82.     cout<<"3. Salir"<<endl;
  83.     cout<<"su accion seleccionada fue:";
  84.     cin>>op1;
  85.     switch(op1)
  86.                {
  87.                case '1':
  88.                    
  89.                   system("CLS");
  90.                   Newcoor->registrar();
  91.                   system("pause>nul");  
  92.                break;
  93.                case '2':
  94.                break;
  95.                
  96.                case '3':
  97.                break;
  98.                default:
  99.                       parametros_incorrectos();
  100.                break;
  101.                
  102.                }
  103.    
  104.    
  105.     }while(op1!='3');
  106.     system("PAUSE");
  107.     return EXIT_SUCCESS;
  108. }

Etiquetas: favor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:43.