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

[c++] Error

Estas en el tema de [c++] Error en el foro de C/C++ en Foros del Web. Hola, no comprendo este error, por favor alguien ayudeme, gracias. C:\Users\Luana\Documents\main.o:main.cpp|| undefined reference to `Clientes::Clientes(std::string)'| ||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 1 ...
  #1 (permalink)  
Antiguo 25/11/2014, 12:55
 
Fecha de Ingreso: noviembre-2014
Mensajes: 1
Antigüedad: 9 años, 5 meses
Puntos: 0
[c++] Error

Hola, no comprendo este error, por favor alguien ayudeme, gracias.

C:\Users\Luana\Documents\main.o:main.cpp|| undefined reference to `Clientes::Clientes(std::string)'|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|




Código:
//Clientes.h


#ifndef CLIENTE_H_INCLUDED
#define CLIENTE_H_INCLUDED

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <iomanip>
#include <list>
#include <string>
#include <cstdlib>
#include <math.h>
#include <time.h>
#include <windows.h>

using std::cout;
using std::cin;
using std::string;
using std::endl;

class Clientes
{
public:
    Clientes (string);
private:
    string nombre;
};

#endif // CLIENTE_H_INCLUDED
Código:
//Clientes.cpp
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <iomanip>
#include <list>
#include <string>
#include <cstdlib>
#include <math.h>
#include <time.h>
#include <windows.h>

using std::cout;
using std::cin;
using std::string;
using std::endl;

#include "Clientes.h"

Clientes::Clientes (string nombre1)
{
nombre= nombre1;
}


Código:
//MAIN

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <iomanip>
#include <list>
#include <string>
#include <cstdlib>
#include <math.h>
#include <time.h>
#include <windows.h>

using std::cout;
using std::cin;
using std::string;
using std::endl;

#include "Clientes.h"

int main ()
{
    Clientes clientes ("Sergio");
system ("pause");
    return 0;
}
  #2 (permalink)  
Antiguo 25/11/2014, 14:38
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [c++] Error

El problema es que el constructor de Clientes debería tomar una referencia constante como argumento:
Clientes(const string&);

Porque al hacer:
Clientes clientes ("Sergio");

"Sergio" es un literal de caracteres temporal (un "rvalue") que va a ser promovido a const string, y esa const string no puede ser modificada.
  #3 (permalink)  
Antiguo 25/11/2014, 14:44
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: [c++] Error

Estas utilisando un proyecto? Creo que es por que no enlaza el archivo clientes.cpp

si pones la funcion clientes luego despues de la clase veras que si funciona.
Código C++:
Ver original
  1. //Clientes.h
  2.  
  3.  
  4. #ifndef CLIENTE_H_INCLUDED
  5. #define CLIENTE_H_INCLUDED
  6.  
  7. #include <iostream>
  8. #include <stdlib.h>
  9. #include <stdio.h>
  10. #include <iomanip>
  11. #include <list>
  12. #include <string>
  13. #include <cstdlib>
  14. #include <math.h>
  15. #include <time.h>
  16. #include <windows.h>
  17.  
  18. using std::cout;
  19. using std::cin;
  20. using std::string;
  21. using std::endl;
  22.  
  23. class Clientes
  24. {
  25. public:
  26.     Clientes (string);
  27. private:
  28.     string nombre;
  29. };
  30.  
  31. Clientes::Clientes (string nombre1){
  32. nombre= nombre1;
  33. }
  34.  
  35. #endif // CLIENTE_H_INCLUDED

Lo que te falta es crear un proyecto de consola y marcar para que te compile esos .cpp que tengas.
  #4 (permalink)  
Antiguo 25/11/2014, 16:35
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [c++] Error

Eh eh eh ...

No me hagan caso. El constructor toma su argumento por valor, no por referencia como yo había creído ver... Nada, olvidarme.

Etiquetas: int
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 19:43.