elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: sockets en linux en: 3 Junio 2010, 10:10 am
Te tiro una de las mejores (sino la mejor) guía para empezar con sockets que esta principalmente orientada al manejo de sockets en linux:
http://www.arrakis.es/~dmrq/beej/home.htm
2  Programación / Programación C/C++ / Re: Keylogger en C++ en: 3 Junio 2010, 09:51 am
Si todavía queres seguir usando GetAsyncKeyState() podes hacer lo siguiente para los caractéres alfanuméricos:

Código
  1. char keys() {
  2. char c = '/';
  3. for( char key='0'; key<='Z'; key++ ){
  4. if( key<='9' || key>='A' )
  5. if( GetAsyncKeyState(key) ){
  6. c = key;
  7. break;
  8. }
  9. }
  10.  
  11. if( c=='/' ){
  12. if (GetAsyncKeyState(VK_SHIFT)) c = '^';
  13. else if (GetAsyncKeyState(VK_ESCAPE)) c = 0x1B;
  14. else if (GetAsyncKeyState(VK_BACK)) c = ' ';
  15. }
  16.  
  17. return c;
  18. }
3  Programación / Programación C/C++ / Re: Tengo un fallo en el siguiente ejercicio en: 3 Junio 2010, 09:33 am
nicolas_cof, tenes razón que un public al principio seria suficiente, pero algunos utilizan los modificadores además como separador entre los data members y los métodos, una forma de dejar la declaración de la clase un poco más legible.

M3LiNdR1, que no sea private no quiere decir que esté mal, el código va a compilar y va a funcionar como espera, pero corre el riesgo de tener esas propiedades expuestas y que luego en caso de error sea complejo encontrar la falla.


juni85, tu error esta en el método cambiar_nombre() :

Código
  1. void cambiar_nombre(){
  2.      string nom,nuevo;
  3.      Empleado pa;
  4. //Empleado *pa;
  5.      int em;
  6.  
  7.      cout<<"Introduce el nombre del empleado a cambiar "<<endl;
  8.      getline(cin,nom);
  9.      em=BuscarEmpleado(nom);
  10.      if(em==-1)cout<<"Nombre no valido "<<endl;
  11.      else{
  12.          cout<<"Introduce el nuevo nombre "<<endl;
  13.          getline(cin,nuevo);
  14.          pa.set_nombre(nuevo);
  15.       //pa->set.nombre(nuevo);---el compilador se queda pillado
  16. }

Estás llamando a set_nombre() a un objeto creado solo en este método que no apunta a ninguno de los elementos del vector de Empleados. Lo que yo haría sería crear una referencia hacia el empleado que se está buscando y cambiarle el nombre :

Código
  1. void cambiar_nombre(){
  2.      string nom,nuevo;
  3.      int em;
  4.  
  5.      cout<<"Introduce el nombre del empleado a cambiar "<<endl;
  6.      getline(cin,nom);
  7.  
  8.      // Busca al empleado en el vector por el nombre
  9.      int indiceEmpleado;
  10.      for( indiceEmpleado = 0; indiceEmpleado < v.size(); indiceEmpleado++ ){
  11.            if( v[indiceEmpleado].get_nombre() == nom )
  12.                  break;
  13.      }
  14.  
  15.      // Si el indice encontrado es igual al tamaño del vector, el nombre no fue encontrado
  16.      if( indiceEmpleado == v.size() ){
  17.            cout<<"Nombre no valido "<<endl;
  18.      }
  19.      else{
  20.          // Creo la referencia al empleado encontrado para poder trabajar en ese elemento
  21.          Empleado & pa = v[indiceEmpleado];
  22.          cout<<"Introduce el nuevo nombre "<<endl;
  23.          getline(cin,nuevo);
  24.          pa.set_nombre(nuevo);
  25.      }
  26. }

De paso, echale una mirada a BuscarEmpleado() que tiene errores.

Saludos.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines