Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: elkiy en 17 Febrero 2013, 19:47 pm



Título: Programa error
Publicado por: elkiy en 17 Febrero 2013, 19:47 pm
Separacion de la interfaz me da error no lo encuentro si alguien lo analiza... Gracias.

El error me lo da en funciones.cpp con la linea return nombrepersona;
Main.cpp
Citar
#include <iostream>
using std::cout;
using std::cin;
#include <string>
using std::string;
using std::getline;

#include "cabezal.h"

int main()
{
   //Variables:
   string tunombre;

   //Mensajes/funciones.
   cout << "Escribe tu nombre: ";
   getline (cin , tunombre);
   tunombrefuncion tunombrefuncion1 (tunombre);
   cin.get();
   return 0;
}

Funciones.cpp
Citar
#include <iostream>
using std::cout;
using std::cin;

#include <string>
using std::string;
using std::getline;

#include "cabezal.h"

tunombrefuncion::tunombrefuncion(string nombre)
{
 Establecernombre(nombre);
}
void tunombrefuncion::Establecernombre(string Enombre)
{
   if (Enombre.length() <= 25)
   {
      nombrepersona = Enombre;
   }
   else
   {
      Enombre.substr (0 , 25);
      nombrepersona = Enombre;
   }
}
string Darnombre()
{
  return nombrepersona;
}

Cabezal.h

Citar
#include <iostream>
using std::cout;
using std::cin;
#include <string>
using std::string;

class tunombrefuncion
{
public:
   tunombrefuncion(string nombre);
   void Establecernombre(string Enombre);
   string Darnombre();
private:
   string nombrepersona;
};


Título: Re: Programa error
Publicado por: elkiy en 18 Febrero 2013, 13:28 pm
agradezco la ayuda que me puedan dar, dado que no he encontrado la solucion.


Título: Re: Programa error
Publicado por: amchacon en 18 Febrero 2013, 14:45 pm
En vez de usar tanto "using std::cout". Puedes resumirlo en un espacio genérico:

Código
  1. #include <iostream>
  2. #include <string>
  3. #include "cabezal.h"
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.   //Variables:
  9.   string tunombre;
  10.  
  11.   //Mensajes/funciones.
  12.   cout << "Escribe tu nombre: ";
  13.   getline (cin , tunombre);
  14.   tunombrefuncion tunombrefuncion1 (tunombre);
  15.   cin.get();
  16.   return 0;
  17. }

En cuanto al resto de código, yo lo veo correcto. Cuentanos que problema te da.



Título: Re: Programa error
Publicado por: Sputnik_ en 18 Febrero 2013, 15:41 pm
¿Te aseguraste de que ambos archivos estén en el mismo directorio?


Título: Re: Programa error
Publicado por: 0xDani en 18 Febrero 2013, 16:03 pm
Y que error te da?


Título: Re: Programa error
Publicado por: elkiy en 18 Febrero 2013, 17:54 pm
hola pues mira el error me lo da en funciones.cpp, pense que era eso que me dijiste de que esten mal puestas osea n otro directorio, puse a funciones y a main en archivo de codigo fuente, y a cabezal en archivo de encabezado, pero el problema sigue igual, es en funcionnes.cpp la ultima funcion donde dice  return nombrepersona; lo raro de esto es que trabaje con nombrepersona en el mismo archivo y no me da error que raro que solo en esa linea, el error es el siguiente: Error el identificador nombre persona no está definido, es muy raro esta bien que sea un private, pero main no lo puede usar, de modo que funciones lo usa y no da error hasta esa ultima linea :( cualquier cosa pregunten

Citar
1>------ Operación Generar iniciada: proyecto: pruebac, configuración: Debug Win32 ------
1>  funciones.cpp
1>c:\documents and settings\administrador\mis documentos\visual studio 2010\projects\pruebac\pruebac\funciones.cpp(29): error C2065: 'nombrepersona' : identificador no declarado
========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========


Título: Re: Programa error
Publicado por: amchacon en 18 Febrero 2013, 19:14 pm
En donde defines la clase, pon esto en la primera línea:

Código
  1. #pragma once

De esta forma, te aseguras que solo se incluirá una vez el archivo (lo digo porque lo tienes incluido desde dos ficheros).


Título: Re: Programa error
Publicado por: elkiy en 19 Febrero 2013, 18:05 pm
pero alguien pudiera explicarme cual es el error, osea porque no lo toma


Título: Re: Programa error
Publicado por: Miky Gonzalez en 19 Febrero 2013, 18:21 pm
Porque lo tienes declarado como privado:
Código
  1. private:
  2.   string nombrepersona;
Declaralo dentro de public.

Saludos

EDITO: ¿Porque incluyes estos archivos en cabezal.h?:
Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::cin;
  4. #include <string>
  5. using std::string;

El codigo te serviria igual sin incluirlos... están ahí para ocupar espacio. Yo cuidaría un poco más la presentación del código.


Título: Re: Programa error
Publicado por: elkiy en 19 Febrero 2013, 18:37 pm
Porque lo tienes declarado como privado:
Código
  1. private:
  2.   string nombrepersona;
Declaralo dentro de public.

Saludos

EDITO: ¿Porque incluyes estos archivos en cabezal.h?:
Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::cin;
  4. #include <string>
  5. using std::string;

El codigo te serviria igual sin incluirlos... están ahí para ocupar espacio. Yo cuidaría un poco más la presentación del código.

pero todo lo que este en private puede ser usador por las funciones de la misma clase? y sino como puedo hacer para usar el private?


Título: Re: Programa error
Publicado por: Miky Gonzalez en 19 Febrero 2013, 18:47 pm
Puedes probar a poner:
Código
  1. return tunombrefuncion::nombrepersona;
Pero de todas formas a parte que tu codigo no esta entre geshi-c++; Es inteligible, esta sucio, no se puede leer bien.


Título: Re: Programa error
Publicado por: elkiy en 19 Febrero 2013, 18:59 pm
no me andubo eso, alguien sabe como se llama a una funcion que sea private?