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 - <<<-Basura->>>

#41
Gracias por toda la ayuda que me brindastes ya lo he solucionado!!.

Basándome en lo ultimo que publicaste, se que hay que separar todo en *.hpp y *cpp pero no lo he hecho así ya que llega tornarse enorme para buscar un problema, también la solución que me brindaste no es la que andaba buscando. la de en el main tener que incluir las dos librerías:

Código (cpp) [Seleccionar]

#include "B.h"    // Esto es lo que estaba evitando
#include "A.h"    // Esto es lo que estaba evitando

int main(){
    return 0;
}


Y esta es la solución:

A.hpp:
Código (cpp) [Seleccionar]

#include "B.hpp"

#ifndef _A_
#define _A_

class A{
private:
B* b;
public:
A(int);
A(B*);
};

A::A(int algo){
b = new B(algo);
}

A::A(B *pB){
b = pB;
}

#endif


B.hpp:
Código (cpp) [Seleccionar]

#ifndef _B_
#define _B_

class A;

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

B::B(int algo){
dato = algo;
}

#include "A.hpp"
A* B::retornoA(){
A *a = new A(10);
return a;
}

#endif


Y en el main incluyo solo a A.hpp
Código (cpp) [Seleccionar]

#include "A.hpp"

int main(){
return 0;
}


amchacon muchas gracias por ayudarme, fuiste de muy gran ayuda, de toda la gente que ayudo(nadie mas), espero que mi solución te sea de feedback,
Grafcias
#42
Mira para Tratar de resolverlo he hecho un código sin sentido pero útil que simula lo que esta pasando, tengo 2 fichero A.hpp y B.hpp

A.hpp:
Código (cpp) [Seleccionar]

#include "B.hpp"

#ifndef _A_
#define _A_

class A{
private:
B* b;
public:
A(int);
A(B*);
};

A::A(int algo){
b = new B(algo);
}

A::A(B *pB){
b = pB;
}

#endif


B.hpp:
Código (cpp) [Seleccionar]

//#include "A.hpp"
#ifndef _B_
#define _B_

//class A;

class B{
private:
int dato;
public:
B(int);
//A* retornoA();
};

B::B(int algo){
dato = algo;
}

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


main:
Código (cpp) [Seleccionar]

#include "A.hpp"

int main(){
return 0;
}


Como puedes ver en "B.hpp", tiene cosas comentadas, esa es la forma que tenía el código antes de que surgiera el problema...

Citar
Lo que tienes que hacer.. es descomentar lo que veas que es necesario.
Estoy usando el IDE geany en linux
El compilador g++
#43
Ya lo he implementado pero me da otro error:
Citar
Lib/Socket/Conectividad.hpp:33:52: error: invalid use of incomplete type 'struct Socket'
Lib/Socket/Conectividad.hpp:6:7: error: forward declaration of 'struct Socket'


Que podría ser eso
#44
Bueno Ahora solo me esta dando error en el método:

Código (cpp) [Seleccionar]

Socket Conectividad::Accept(){
//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(&HostEstructura);
return SocketRetorno;
}

Este es el error que me da
Citar
Lib/Socket/Conectividad.hpp:25:29 return type 'struct Socket' is incomplete
Lib/Socket/Conectividad.gpp:33:22 variable 'Socket SocketRetorno' has initializer but incomplete type

Compilation fail.
#45
http://stackoverflow.com/questions/2133250/does-not-name-a-type-error-in-c

Hay en esa pagina tiene un problema similar al mio, lo resuelve pero... no presenta el problema que yo tengo ya que yo trato de retornar la clase he usar el constructor...

Los includes están dentro y bien los he probado de todas formas y nada...
#46
Si están implementadas de forma separada en ficheros .cpp y .hpp, pero aquí lo agrego pegado porque son muchos muchos métodos.. entonces solo estoy pegando donde esta el problema.

Siento mucho ese error del return queda

Código (cpp) [Seleccionar]

Socket SocketRetorno(HostEstructura);
return SocketRetorno;
}


El problema es que si elimino esta linea:
Código (cpp) [Seleccionar]

class Socket;


Me da mas problemas, esto se debe a que No esta incluido el fichero de Socket.hpp en el Connectividad.cpp, pero si lo incluyo me da problemas y si no lo incluyo también, como puede ver del lado de la clase Socket.cpp si esta incluido el fichero "Conectividad.hpp", el problema es con el método Accept() que tiene que devolver un objeto tipo socket pero... como obtiene la clase socket si no ha sido declarada y no se puede incluir
#47
Programación C/C++ / Problema con #includes
4 Junio 2013, 06:35 AM
Buenas Tengo 2 clases que me están dando problemas y es por el modo de declaración, aun no se como resolverlo si alguien sabe por favor ayude me...

Esto tiene un archivo
Código (cpp) [Seleccionar]

#include "Conectividad.hpp"

#ifndef _SOCKET_CPP
#define _SOCKET_CPP
class Socket{
private:
Host *host;
public:
Receiver *receiver;
Sender *sender;
Conectividad *conectividad;
public:
Socket(Host*);
};

Socket::Socket(Host*pHost){
this->host = pHost;
this->receiver = new Receiver(this->host);
this->sender = new Sender(this->host);
this->conectividad = new Conectividad(this->host);
}


Esto tiene el otro archivo
Código (cpp) [Seleccionar]


#ifndef _CONECTIVIDAD_CPP
#define _CONECTIVIDAD_CPP

class Socket;

class Conectividad {
private:
Host *host;
public:
Conectividad(Host*,int);

bool Bind();
bool Listen(int);
Host Accept();
bool Connect();

Socket Acceptar();
};

Socket Conectividad::Accept(){
//Variables
int addrlen = sizeof(sockaddr_in); // Tamaño
Host HostEstructura; // Return

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

Socket SocketRetorno(HostEstructura);
return HostEstructura;
}
#endif

El Error es este:
Citar
does not name a type error in C++

Ahora si, El problema se da en el segundo archivo, el primero tiene todo bien pero cuando intento implementar el método Accept y que me retorne un Socket me tira ese error... también es porque intento llamar el constructor de Socket si haber implementado la clase completa pero es que no puedo hacer un include de Socket dentro del segundo archivo ya que me rebota, porque ya hice un #include "Conectividad.hpp" en Socket y no se porque sucede....

Alguna sugerencia??
#48
Programación C/C++ / Re: Problema con sockets
22 Abril 2013, 02:36 AM
0xDani, hice que mi programa capturara la señal SIGPIPE, y la captura pero no se como hacer para saber cual fue exactamente el socket que tubo el problema, me entiendes??

Si captura la señal, pero no se cual fue el socket que la producío
#49
Programación C/C++ / Problema con sockets
11 Abril 2013, 21:54 PM
Buenas estoy trabajando con sockets y he dado con un problema...

Mi servidor acepta n cantidad de clientes y los agrega a una lista, y controla todos los clientes con hilos respectivamente.

El problema esta cuando un cliente se desconecta sin avisar... esto provoca que se caiga el servidor: "(program exited with code: 141)"...

Lo que quiero saber es como puedo saber si un cliente se desconecta de forma inesperada??
Como puedo controlarlo?
#50
Con 2 vectores... uno para vocales y otro para consonantes

Recorriendo los por cada letra, cuando encuentra una coincidencia suma en alguno de los contadores...

solo necesitas 2 for y 2 if... creo