Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: dari en 20 de Agosto de 2011, 05:47:46 PM

Título: enum en Xcode (c++)
Publicado por: dari en 20 de Agosto de 2011, 05:47:46 PM
Buenas,

Tengo una classe tal que así:

Archivo .h
=========================
class A
{
public:
enum Acciones
{
accionA = 0,
accionB,
accionC
};

void activarAccion(Acciones a);
void funcionCualquiera();
}


Archivo .cpp (con su include del .h)
=========================
void A::activarAccion(Acciones a)
{
funcionQueRecibeUnEntero(a);
}

void A::funcionCualquiera()
{
arrayYaDeclarado[Acciones::accionA];
}


Pues bien, en la primera función ningún problema, pero en la segunda me dice que "Acciones is not a class or namespace" y que no la puedo usar así, cuando el mismo programa me compila perfectamente en windows :S

¿Alguien me lo puede explicar? Por mucho que busco parece que sea el único del mundo al que le pasa :S
Título: Re: enum en Xcode (c++)
Publicado por: Warchief en 20 de Agosto de 2011, 07:35:14 PM
Prueba sin Acciones:
arrayYaDeclarado[accionA];

O con el nombre de la clase:
arrayYaDeclarado[A::Acciones::accionA];
Título: Re: Re: enum en Xcode (c++)
Publicado por: dari en 20 de Agosto de 2011, 09:16:52 PM
Con lo primera funciona (con la segunda no), he creado un namespace y ya me funciona como en windows.

Aunque no entiendo porque en un sitio si y en el otro no :S
Título: Re: enum en Xcode (c++)
Publicado por: Mars Attacks en 21 de Agosto de 2011, 12:11:29 AM
A simple vista no veo nada raro o mal. Probablemente con un clean y un build se te pase. A veces Xcode hace codewarradas. No dejes de contar cuál era el problema si te lo cruzas.
Título: Re: enum en Xcode (c++)
Publicado por: dari en 21 de Agosto de 2011, 12:59:03 AM
El problema ni idea :S

El código debía estar bien, en visual studio funcionaba perfectamente, pero en xcode no le daba la gana. En fin, ahora ya va:

namespace Acciones
{
    enum A
   {
      idle = 0,
      longIdle,
      walk,
      run,
      jump,
      frontalHit,
      rearHit
   };
}

array[Acciones::jump]

Así que ni tan mal, ahora a ver cuando lo vuelva a compilar en windows si irá :/
Título: Re: enum en Xcode (c++)
Publicado por: Warchief en 21 de Agosto de 2011, 08:10:09 PM
Cita de: dari en 20 de Agosto de 2011, 09:16:52 PM
Con lo primera funciona (con la segunda no), he creado un namespace y ya me funciona como en windows.
Aunque no entiendo porque en un sitio si y en el otro no :S

En la segunda queria decir:
arrayYaDeclarado[A::accionA];

Si no recuerdo mal usar el nombre del enumerado no es standard. Los compiladores a veces anyaden extensiones, asi que es probable que sea una extension de Microsoft. C# obliga a usar el nombre.

Un enumerado puede ser anonimo.
Título: Re: enum en Xcode (c++)
Publicado por: Warchief en 21 de Agosto de 2011, 08:18:34 PM
http://msdn.microsoft.com/en-us/library/ms173704(v=vs.80).aspx
Correcto.

Seguramente estas ignorado este warning the Microsoft. Si estas desarrollando en multiplataforma, recomiendo que pongas warning level 4, y tratar warnings como errores (no compila si hay algun warning), en las propiedades del proyecto.
Título: Re: Re: enum en Xcode (c++)
Publicado por: dari en 22 de Agosto de 2011, 02:32:40 AM
Muchas gracias, me será muy útil saber eso.
Nunca había compartido un proyecto entre varias plataformas