Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: lSources en 11 Abril 2017, 07:18 am



Título: Problema en Visual Studio.
Publicado por: lSources en 11 Abril 2017, 07:18 am
He estado usando el programa de Visual Studio 2017 y despues de varios intentos, sigo fallando al intentar hacer un Generador de contraseñas. No tengo idea de porque el error se da solo en Visual Studio, pues lo he probado con otros programas (Como el Dev-C++) y funciona perfectamente. Espero que alguien pueda ayudarme a solucionar este problema.
El codigo:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

static const char alphanum[] =
"0123456789"
"!@#$%&*"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";
int size = sizeof(alphanum) - 1;

int main()
{
   cout <<"Contraseña: ";
   
   int length = 8;

   srand(time(0));
   for (int i = 0; i < length; i++)
   {
      cout << alphanum[rand() % size];
   }
   return 0;
}

El error y la advertencia:
Error   C2872           'size': ambiguous symbol
Advertencia C4244   'argument': conversion from 'time_t' to 'unsigned int', possible loss of data   

Espero que alguien pueda ayudarme con esto pronto.



Título: Re: Problema en Visual Studio.
Publicado por: MAFUS en 11 Abril 2017, 14:51 pm
time() devuelve un time_t que es un typedef que depende de la plataforma. Haz un cast a unsigned int, que es lo que espera srand().

sizeof() devuelve un size_t que es un typedef que depende de la plataforma. Cambia el tipo de la variable size de int a size_t. De todas formas parece que al compilador no le gusta el nombre de variable size, así que cámbialo por otra cosa.