Hej wszystkim, mam problem z enumami, które w moim projekcie występują dość często i nie chciałbym z nich zrezygnować, a lepiej zrozumieć mój problem.
Posiadam klasę player, a w niej 2 enumy:
enum states
{
Attack, Climb, Dead,
Glide, Idle, Jump,
Jump_Attack, Jump_Throw,
Run, Slide, Throw, COUNT
} cTextureState;
enum physicsPoints
{
LEFT_TOP, RIGHT_TOP,
RIGHT_BOT, LEFT_BOT,
CENTER, COUNT
};
W takiej postaci kompilator wyrzuca błąd o re-definicji słowa COUNT, po odwiedzeniu znanej zapewne wszystkim strony stackoverflow znalazłem rozwiązanie. Polega ono na wstawieniu słowa class między enum, a jego nazwą.
Posiadam jednak funkcję:
Vector2f getCorner(physicsPoints a) { return corners[a]; }
którą wywoływałem np. getCorner(physicsPoints::CENTER)
Jednak po wprowadzeniu tej drobnej zmiany pojawiły się kolejne błędy:
no operator "[]" matches these operands oraz
binary '[': no global operator found which takes type 'player::states' (or there is no acceptable conversion)
Co powoduje ten błąd i dlaczego tak się dzieje?
Czy stosowanie klas enum w sposób który to robię jest rozsądny/powszechnie stosowany?