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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con orden de declaración de 2 clases
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con orden de declaración de 2 clases  (Leído 1,285 veces)
xRodak

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Problema con orden de declaración de 2 clases
« en: 14 Enero 2014, 19:39 pm »

Estoy seguro que el error debe ser muy evidente, así que pido disculpas de antemano por preguntar algo tan básico.

Lo que sucede, es que tengo una clase y una estrucura:

Código:
class MyClass
{
public:
void onCommand(const [b]Command[/b]& command, sf::Time dt);
};

struct Command
{
std::function<void([b]SceneNode[/b]&, sf::Time)> action;
unsigned int category;
};

Y si las escribo de esta forma en mi codigo, me da el siguiente error:

Código:
|157|error: 'Command' does not name a type|

Supuse que haciendo el orden contrario obtendría un error similar, así que declaré la estructura al inicio del código para señalarle al código que mi estructura si existía en algún lado. Entonces lo escribí de esta forma:

Código:
struct Command;

class MyClase
{
public:
void onCommand(const [b]Command[/b]& command, sf::Time dt);
};

struct Command
{
std::function<void([b]SceneNode[/b]&, sf::Time)> action;
unsigned int category;
};

Por lo que conseguí repararlo.

Pero ahora, la función onCommand me da error al llamar a command.category:

Código:
void SceneNode::onCommand(const Command& command, sf::Time dt)
{
    [b]command.category;[/b]
}

Acaso tambien debo declarar esta variable de mi estructura al comienzo del código? Si tuviera muchas variables deberái declararlas todas? Hay alguna otra solución.

Muchas gracias de antemano, espero que se haya entendido el problema.

Saludos.


« Última modificación: 14 Enero 2014, 19:41 pm por xRodak » En línea

Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: Problema con orden de declaración de 2 clases
« Respuesta #1 en: 16 Enero 2014, 07:07 am »

Las declaraciones siguen un orden secuencial. Si querés utilizar una estructura primero tenés que declararla. Hay varias formas de resolver eso. Todo depende del resto del código que tengas. La forma más sencilla sería así:

Código
  1. struct Command {
  2. std::function<void( SceneNode&, sf::Time )> action;
  3. unsigned int category;
  4. };
  5.  
  6. class MyClass {
  7. public:
  8. void onCommand( const Command& command, sf::Time dt );
  9. };

Citar
Acaso tambien debo declarar esta variable de mi estructura al comienzo del código? Si tuviera muchas variables deberái declararlas todas? Hay alguna otra solución.
Todo lo que utilices siempre debe estar declarado antes. Si tenés muchas variables y tu intención es tener un código limpio,  podrías utilizar otros archivos.

Código
  1. #include "command_struct.hpp"
  2. class MyClass {
  3. public:
  4. void onCommand( const Command& command, sf::Time dt );
  5. };

Un saludo!


« Última modificación: 16 Enero 2014, 07:10 am por Beakman » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con las clases en c#
.NET (C#, VB.NET, ASP)
The Jackal 2 2,561 Último mensaje 18 Noviembre 2007, 13:10 pm
por The Jackal
Problema con clases
Java
Debci 3 2,541 Último mensaje 9 Julio 2009, 20:53 pm
por Amerikano|Cls
Problema con Clases
.NET (C#, VB.NET, ASP)
Dreamcacher 1 2,028 Último mensaje 5 Octubre 2011, 20:51 pm
por Keyen Night
[PREGUNTA] Convertir una declaracion API de C# a VB6 (problema con punteros) « 1 2 »
Programación Visual Basic
el_c0c0 14 7,195 Último mensaje 19 Marzo 2012, 14:47 pm
por el_c0c0
¿Atan() Siempre devuelve 0? (posible problema con la declaración de las varibles
Programación C/C++
carlmycol 1 1,914 Último mensaje 4 Abril 2013, 17:49 pm
por isseu
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines