Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - amchacon

#851
Cita de: noob2012 en  5 Junio 2013, 18:52 PM
Eso ya lo sé, en cuánto al lenguaje de programación me refiero, no a su interfaz.
Es en C++.

Es una librería para interfaces gráficas, no es un lenguaje nuevo ni implanta cosas nuevas. Simplemente recopila funciones de las API de cada SO y las pone de forma que sean intuitivas y fáciles de manejar (entre comillas porque sigue teniendo su dificultad).

En mi opinión, wxWidgets puede ser un poco complicado para tu nivel. Si quieres pasarte a la programación gráfica, mirate este tutorial de Allegro (una librería multimedia para hacer videojuegos, en C por supuesto):
http://www.nachocabanes.com/videojuegos/ipj/index.php
#852
Vale lo he estado probado y tienes razón.

El problema es el orden de la cabeceras, ambas clases se complementan pero al incluirse forman un bucle recursivo.

He conseguido compilar lo siguiente:

A.hpp

Código (cpp) [Seleccionar]
#ifndef A_H
#define A_H

class A
{
   public:
       A(int);
   protected:
   private:
       int num;
       B* Algo;
};

#endif // A_H


A.cpp

Código (cpp) [Seleccionar]
#include "B.h"
#include "A.h"

A::A(int n)
{
   num = n;
   Algo = new B;
}


B.hpp
Código (cpp) [Seleccionar]
#ifndef B_H
#define B_H
class A;

class B
{
   public:
       B();
   protected:
   private:
       int tonteria;
       A* retornoA();
};

#endif // B_H


B.cpp
Código (cpp) [Seleccionar]
#include "B.h"
#include "A.h"

B::B()
{
   tonteria = 2;
}

A* B::retornoA(){
A *a = new A(10);
return a;
}


Main.cpp

Código (cpp) [Seleccionar]
#include <iostream>
#include "B.h"
#include "A.h"
using namespace std;

int main()
{
   cout << "Hello world!" << endl;
   return 0;
}


Hay otro método que proponen aquí:
http://www.daniweb.com/software-development/cpp/threads/20494/c-beginner-include-recursion-problem
#853
Cita de: <<<-Underwar->>> en  5 Junio 2013, 00:52 AM
Ya lo he implementado pero me da otro error:
Que podría ser eso
Eliminastes lo de class socket;?

Estoy un poco extrañado, normalmente todo esto es algo mecánico y rutinario.
#854
Cita de: kaltorak en  5 Junio 2013, 00:48 AMMira tengo una duda me he pasado al codeblock y cuando creo un proyecto en SDL y pongo el código, tras compilarlo me sale en modo consola como se configura el codeblock para que no se ejecute en modo consola??
Project -> Properties -> Build Targets -> Type: Gui Application

Pero todo eso te debería venir ya configurado cuando creas un proyecto de SDL (New -> Project -> SDL Project).

Cita de: dato000 en  5 Junio 2013, 00:49 AM
eres un...precisamente tu, por favor no pongas más payasos, y explica lo del md5!!!!

que paso no servia??? es simple, es en linux donde no he probado en breve hare la operacion que ando un poco ocupado
¿Que te has fumado?  ;-)
#855
Solucionado:



https://dl.dropboxusercontent.com/u/69551225/Minijuego4.rar

¿Como lo he hecho? Simplemente lo he compilado desde Windows XP y ya iba *_*
#856
Cuando ejecutas un programa, el sistema le asigna una memoria para su uso interno. Se conoce como memoria de pila y es muy rápida porque todo se encuentra de forma lineal y adyacente. No hay fragmentación alguna

Ahora bien, esta memoria es bastante limitada:

Código (cpp) [Seleccionar]
int Cosa[10000];

Esto dará un error al ejecutarlo porque la memoria de la pila es muy limitada y si nos pasamos declarando más cosas de la cuenta, podríamos acabar dando cuenta que nos hemos agotado la pila y estamos en la memoria de otro programa (por suerte, el SO no nos dejará que nos vayamos de nuestra frontera y cerrará el programa con el famoso error de "Violación del segmento").

Esto nos lleva a una encrucijada, nuestro pc tiene 4 gb de ram pero no podemos utilizar más que una poquita. Por suerte para evitar esto tenemos el famoso new (malloc en C):

Código (cpp) [Seleccionar]
int* Cosa = new int[10000];

Lo que hace es pedirle al sistema operativo "memoria adicional", el sistema operativo buscará memoria libre. Si es posible satisfacer la petición, nos reservará dicha memoria y nos devolverá un puntero con la dirreción donde se encuentra la memoria.

¿Por que necesitamos un puntero? Porque la memoria que nos dará el SO puede encontrarse en cualquier lugar, para que podamos operar con ella el SO nos dá su dirreción.

La memoria sigue reservada hasta que el programa se cierra o hasta que se hace un delete. El delete le dice al SO que ya no necesita esa memoria y que puede liberarla.

Hay un error de programación conocido como falla de memoria. Consiste en que pides memoria con new pero después pierdes su dirreción, por lo que no puedes operar con ella. Aquí un ejemplos:

Código (cpp) [Seleccionar]
char* Cosa = new char[10];
Cosa = new char[5];


Este es un error grave, hemos reservado 15 bytes en la memoria pero solo tenemos la dirreción de los 5 últimos bytes. Los primeros 10 bytes no podemos usarlos porque hemos perdido su dirreción (tampoco podemos liberarla por la misma razón). Lo gracioso esque al sistema operativo le consta como memoria reservada, ya hemos desperdiciado 10 bytes de memoria.


Este concepto aplicado a clases (como la clase coche) funciona de forma similar, calcula cuantos bytes ocupan las variables de la clase y le pide al sistema operativo esa cantidad de bytes.
#857
La clase socket no tiene constructor copia.

Creo que lo más sencilo es que hagas esto:
Código (cpp) [Seleccionar]
Socket* Conectividad::Accept(){ // Puntero
//Variables
int addrlen = sizeof(sockaddr_in); // Tamaño
Host HostEstructura; // Return

// Acepta la Conexion
HostEstructura.setSocket( accept(host->getSocket(), (sockaddr*)HostEstructura.getSockAddress(),  (socklen_t*)&addrlen ) );

Socket* SocketRetorno = new Socket(&HostEstructura);
return SocketRetorno;
}


Aunque en mi opinión, creo que es más práctico hacer un constructor adicional en la clase Socket con estos datos.
#858
Estoy fascinado Leo, en cada post me sorprendes con algo nuevo  ;-)

Creo que podríamos considerarte el amo del lenguaje C.
#859
Ah vale.

No deberías darte problemas el include siempre que lo pongas dentro del protector (ahí lo tienes fuera)

Con protector me refiero a:

Código (cpp) [Seleccionar]
#ifndef _SOCKET_CPP
#define _SOCKET_CPP

#860
printf("Haga su jugada: ");
scanf("%d",&k);     
matriz[k][n]='X';


Has puesto la coordenada x pero no la y  :silbar: