elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
14 Febrero 2012, 09:42  

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Problema declarando objetos dentro de objetos, ligados entre sí
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema declarando objetos dentro de objetos, ligados entre sí  (Leído 1,753 veces)
jscupc

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Problema declarando objetos dentro de objetos, ligados entre sí
« en: 21 Marzo 2010, 18:03 »

Hola, tengo un problemilla referente a la declaración de objetos dentro de otros objetos, y quisiera saber si me podríais echar una mano. Tengo lo siguiente:

class Serie
{
   GPS objgps;
   POS objpos;
}

Mi main debe crear dos objetos Serie (los llamaré Serie1 y Serie2). Entonces crea un thread que, como método inicial, utiliza uno que está dentro del objeto objgps de Serie1. Dentro de un método de Serie1.objgps, necesito acceder a un método de Serie2.objpos, que a su vez debe acceder a métodos de Serie2.

Mi problema es que si hago los includes así:

#include GPS.h
#include POS.h
#include Serie.h

Cuando en POS quiero declarar un objeto del tipo Serie dentro de la definición de la clase, o sea:

class POS
{
   Serie miserie;
}

El compilador me da el error:

error C2146: syntax error : missing ';' before identifier 'serial'

Si no declaro Serie miserie dentro de POS, el código, hasta ese punto, compila perfectamente. Me podríais dar alguna sugerencia para hacer lo que desearía hacer? Gracias.


En línea
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.707


Nie Dam Sie


Ver Perfil WWW
Re: Problema declarando objetos dentro de objetos, ligados entre sí
« Respuesta #1 en: 21 Marzo 2010, 20:02 »

Igualmente el error que te da es un error de sintaxis:

syntax error : missing ';' before identifier 'serial'

Te dice que te falta un ";" antes del identificador serial.
Si podes pone el código exacto que da el error (y utiliza GeSHi por favor).

Saludos


En línea


@NeedOfSecurity

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
jscupc

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Problema declarando objetos dentro de objetos, ligados entre sí
« Respuesta #2 en: 21 Marzo 2010, 20:11 »

Pero es que si no declaro el objeto serial dentro de la clase POS, me compila perfectamente. Es cuando quiero incluir un objeto de otro tipo (por ejemplo un Serial dentro de un POS o GPS, o un GPS dentro de un POS) que me da el error de sintaxis...
En línea
Xafi


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Problema declarando objetos dentro de objetos, ligados entre sí
« Respuesta #3 en: 21 Marzo 2010, 20:40 »

si pones codigo sera mas facil de leer.
En línea



Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 4.241


Clarin miente, TN opera y los giles regurgitan.


Ver Perfil WWW
Re: Problema declarando objetos dentro de objetos, ligados entre sí
« Respuesta #4 en: 21 Marzo 2010, 21:32 »

Usa punteros.
En línea



La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón.
jscupc

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Problema declarando objetos dentro de objetos, ligados entre sí
« Respuesta #5 en: 21 Marzo 2010, 22:34 »

Ya lo he probado con punteros, pero cuando ve que son del tipo GPS, o POS o lo que sea, patapúm! En cualquier caso, yo creo que mi problema reside en el orden de los includes, pues al ser clases que tienen objetos unas de las otras, pues entonces hay una que no tiene los includes en orden correcto. He probado de modificar esto también, pero aún así no lo he conseguido :(
En línea
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.707


Nie Dam Sie


Ver Perfil WWW
Re: Problema declarando objetos dentro de objetos, ligados entre sí
« Respuesta #6 en: 21 Marzo 2010, 23:06 »

Es un proyecto de la NASA? de la mafia? estas duro para soltar código y nos ahorraría a todos tener que abstraer una situación que podría verse mas que claro en 2 o 3 lineas.

Si no queres mostrar tu proyecto por X razón (Es confidencial, es malware, es muy largo etc) elabora un código sencillo en pocas lineas que reproduzca el problema que tienes (Es decir que te de el mismo error) basado en la misma idea del algoritmo original.

En cuanto a lo que mencionaste, en ese caso utiliza alguna especie de forward declaration

Saludos
En línea


@NeedOfSecurity

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 4.241


Clarin miente, TN opera y los giles regurgitan.


Ver Perfil WWW
Re: Problema declarando objetos dentro de objetos, ligados entre sí
« Respuesta #7 en: 21 Marzo 2010, 23:28 »

¿POS *objpos; no funciona? No pruebo, estoy cansado  :P
En línea



La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón.
jscupc

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Problema declarando objetos dentro de objetos, ligados entre sí
« Respuesta #8 en: 22 Marzo 2010, 01:27 »

Siento no poder publicar el código, pues no es de mi propiedad y no estoy autorizado para ello. Pero intentaré volver a plantear resumidamente mi duda:

Tengo 3 clases, A, B y C, las cuales actualmente tengo programadas y funcionan perfectamente.

Tanto B como C están contenidas en un objeto de clase A, y quisiera que la clase C pudiera acceder a su vez al objeto A que le contiene. Además, quisiera que en la clase B pudiera tener un objeto de clase C, y en la clase C otro de clase B.

Como ya he remarcado, las tres clases, que actualmente funcionan perfectamente, tienen este aspecto:

class A
{
   class B;
   class C;
}

class B
{}

class C
{}

Pero en el momento que cambio lo anterior por lo siguiente:


class A
{
   class B;
   class C;
}

class B
{}

class C
{
   B objetoB;
}

El compilador me dice que falta un ";" antes de B objetoB, y esto es lo que no logro solucionar. Creo que es algo muy básico que un objeto pueda contener objetos de otro tipo, me suena que con Java (que ahora ya hace un tiempo que no utilizo) se podía hacer perfectamente.

Cada clase la tengo contenida en ficheros distintos. Muchas gracias a los que habéis contestado, espero que me podáis ayudar.

Saludos.
En línea
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.707


Nie Dam Sie


Ver Perfil WWW
Re: Problema declarando objetos dentro de objetos, ligados entre sí
« Respuesta #9 en: 22 Marzo 2010, 02:20 »

Es que eso que pones compilaría perfectamente ya que las forward references están permitidas cuando son miembros de una clase (aunque le agregas trabajo al compilador).

Me sigue pareciendo extraño que el error sea uno de sintaxis, ya que en caso que el tema tenga que ver con las clases, el tipo de error definitivamente seria otro.

En cuanto al acceso a los miembros privados, podrías diagramar las relaciones friend entre las clases y el asunto estaría arreglado.

Lamento no poder ayudarte mas pero es lo que veo por lo que estas exponiendo, tal vez se me este escapando algo.

Un saludo
En línea


@NeedOfSecurity

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines