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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: 1 ... 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [33] 34 35 36 37 38 39 40 41 42 43 44 45
321  Programación / Programación C/C++ / Re: Medir velocidad de ejecución de un programa en lenguaje C.- en: 4 Abril 2016, 20:23 pm
He probado el programa y me salen 0 milisegundos (recuerda que solo mides milisegundos, y estos se truncan), ninguna cifra negativa.
322  Programación / Programación C/C++ / Re: Medir velocidad de ejecución de un programa en lenguaje C.- en: 4 Abril 2016, 15:04 pm
El problema está en la función "ordenar". No has inicializado la variable "i", por lo que al principio del while esta variable tiene un valor basura, que por casualidad, no te da error cuando pones solo tu código pero si que da error cuando fusionamos tu código con el de contar el tiempo. Repito, es casualidad que al principio no diera error
323  Programación / Programación C/C++ / Re: Ayuda con este sencillo programa en: 4 Abril 2016, 14:56 pm
Claro que da error. ¿Dónde has definido las variables "base" y "altura" en la función main?. Primero, si quisieras acceder a las variables del objeto "triangulo" tendrías que acceder a ellas como "triangulo.base" y "triangulo.altura", pero para acceder a estas tienes que hacerlas públicas en la clase
324  Programación / Programación C/C++ / Re: Ayuda con basura en fread en: 2 Abril 2016, 15:30 pm
No pasa porque por casualidad, justo después de tu cadena (en la memoria) hay un carácter nulo (el que indica fin de cadena). En un ejecutable suelen haber muchos de estos caracteres, por eso no es raro que te haya coincidido :D
325  Programación / Programación C/C++ / Re: Ayuda con basura en fread en: 1 Abril 2016, 20:19 pm
Yo creo que el problema reside en que fread no pone un carácter de fin de cadena al final de la cadena 'content'. Para solucionar esto, primero en la memoria dinámica tendrías que darle un byte más y luego añadir un carácter de fin de cadena (el cual es '\0') para que así el programa sepa el fin de la cadena.
326  Programación / Programación C/C++ / Re: (Consulta) Problema con sobrecarga de operadores y plantillas en: 1 Abril 2016, 18:05 pm
No, solo quería la plantilla para no tener que sobrecargar tanto, pero sin duda la sobrecarga es mejor XD Gracias!
327  Programación / Programación C/C++ / Re: (Consulta) Problema con sobrecarga de operadores y plantillas en: 1 Abril 2016, 14:03 pm
Entonces, las plantillas solo se pueden usar en un mismo .cpp. ¿no? Una pena... A sobrecargar!!... Muchas gracias por la respuesta
328  Programación / Programación C/C++ / (Consulta) Problema con sobrecarga de operadores y plantillas en: 31 Marzo 2016, 20:50 pm
Introducción (se puede saltar): Hola, muy buenas. En mi afán por hacer una consola (no es por reinventar la rueda, es cosa de practicar :D) decidí hacerla usando OpenGL (suena raro, pero lo estoy consiguiendo XD).

____
El problema con el que me he topado es a la hora de sobrecargar el operador <<. Para sobrecargarlo, he hecho lo siguiente:

screen.h
Código
  1. class ConsoleScreen {
  2.    public:
  3.        // Algunos métodos...
  4.  
  5.        template <class T>
  6.        ConsoleScreen& operator<<(T value); // Prototipo del operador
  7.  
  8.    private:
  9.        // Varias variables...
  10.  
  11.        std::ostringstream m_cOutput;
  12.  
  13.        // Y más variables...
  14. }

screen.cpp
Código
  1. // Definición de los métodos...
  2.  
  3. template <class T>
  4. ConsoleScreen& ConsoleScreen::operator<<(T value) { // Aquí defino el operador
  5.    m_cOutput << value;
  6.    return *this;
  7. }

main.cpp
Código
  1. int main() {
  2.    // Inicialización de la consola, prueba de métodos...
  3.  
  4.    cConsole << "Checking operator\n"; // Aquí marca el error
  5.  
  6.    // Destrucción de la consola...
  7.    return 0;
  8. }

El error que aparece en la linea que he marcado es el siguiente:
Código:
||=== Build: Release in Texto (compiler: GNU GCC Compiler (x64)) ===|
obj\Release\main.o:main.cpp:(.text.startup+0x13c)||undefined reference to `ConsoleScreen& ConsoleScreen::operator<< <char const*>(char const*)'|
||error: ld returned 1 exit status|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|

Como ven, me aparece que no he definido la sobrecarga del operador (cuando se ve claramente que si). El error solo me aparece con el operador, no con los métodos. He probado a cambiar (dentro de template) 'class' por typename, pero me dice lo mismo.

Para probar también, he definido el operador simplemente con un const char*, y en ese caso si que ha funcionado:
Código
  1. ConsoleScreen& ConsoleScreen::operator<<(const char* value) { // Aquí defino el operador
  2.    m_cOutput << value;
  3.    return *this;
  4. }

Mi duda es: ¿Por qué me salta el error cuando uso plantillas?



Siento si la pregunta se hace larga de leer, pero no sé como podría resumirla más sin dar los datos que creo que son necesarios...
329  Programación / Programación C/C++ / Re: [C][?] No se ejecutan printf en: 23 Marzo 2016, 15:24 pm
Fíjate en una cosa. ¿Qué tiene que pasar para que el if diga que es falsa la condición? O bien que no haya leido los datos suficientes, o bien que el carácter que haya leido sea igual a '\n'. Entonces, se tendrían que dejar de cumplir esas dos condiciones. Para que falle la primera, podríamos introducir un "hola\n" (evidentemente "hola\n" no es un número natural), pero al haber introducido un "hola\n" y haber fallado al traducirlo a número, ese "hola\n" se ha quedado guardado en un búfer esperando a que sea leido. Entonces, una vez fallada la lectura del número natural, se procede a leer el carácter. El primer carácter disponible es la 'h'. Entonces, después de la lectura el entero vale 0 y la variable de tipo carácter vale 'h'. Entonces, como ves, el carácter es distinto de '\n', y por tanto nunca esa condición se va a cumplir.
330  Programación / Programación C/C++ / Re: Ayuda codigo c ++ estructura selectiva + repetitiva en: 20 Marzo 2016, 19:29 pm
Yo creo que el problema es que cuando llamas por primera vez a cin (cuando pides la opción de si convertir de moneda extranjera a pesos y viceversa), el búfer manejado por cin se queda con datos "basura". Entonces, tendrías que limpiar esa basura después de llamar a cin. Hay diversas formas, pero yo te digo esta:

Código
  1. std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

Esa línea de código limpiaría el búfer. Para usarla tienes que incluir <limits>
Páginas: 1 ... 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [33] 34 35 36 37 38 39 40 41 42 43 44 45
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines