Error C2061 Dans visual studio

J'essaie de faire référence à une structure à partir d'une autre classe dans mon code et il me donne une erreur, me disant que j'ai un problème de syntaxe.

#pragma once

#include "Definitions.h"

#include "GV.h"
#include "UI.h"
#include "Tile.h"
#include "Item.h"

class Figure {
public:
    //Figure index
    struct FIGURE_TYPE {
        //Where to crop the image from
        SDL_Rect crop;
        int x;
        int y;
    };

    //The game figure
    FIGURE_TYPE figure_index[FIGURE_COUNT];

    //The figure array
    int figure_array[MAP_HEIGHT / 64][MAP_WIDTH / 64];

    //Functions
    Figure ( void );
    bool draw_figures ( SDL_Surface* screen, SDL_Surface* figures, SDL_Rect camera, Figure::FIGURE_TYPE figure_spec[FIGURE_COUNT] );
};

C'est la structure dans la Figure.h,

#pragma once

#include "Definitions.h"

#include "GV.h"
#include "Tile.h"
#include "Item.h"
#include "Figure.h"

class UI {
public:
    UI ( void );
    void set_camera ( SDL_Rect& camera, Figure::FIGURE_TYPE figure_spec[FIGURE_COUNT] );
    bool draw_map ( SDL_Surface* screen, SDL_Rect& camera, SDL_Surface* tiles, SDL_Surface* figures, Figure::FIGURE_TYPE figure_spec[FIGURE_COUNT] );
    bool draw_status ( void );
};

Et c'est là que j'référence, à partir d'un autre fichier d'en-tête de l'INTERFACE utilisateur appelé.h. Je sais qu'il ya un problème avec le référencement des structures, je ne sais pas comment le résoudre. Problème Simple, un veux de l'aide?

Le problème n'est pas que le Type de Figure est déclarée à l'extérieur de la Figure.h, ou que c'est privé, par opposition à public.

Rapports D'Erreur

Erreur 1 erreur C2653: 'Figure' : n'est pas une classe ou d'un nom d'espace de noms c:\users\jim\documents\c++\roguelike\roguelike\interface utilisateur.h 13 1 roguelike

Erreur 3 erreur C2653: 'Figure' : n'est pas une classe ou d'un nom d'espace de noms c:\users\jim\documents\c++\roguelike\roguelike\interface utilisateur.h 14 1 roguelike

Error 2 error C2061: erreur de syntaxe : identificateur 'FIGURE_TYPE' c:\users\jim\documents\c++\roguelike\roguelike\interface utilisateur.h 13 1 roguelike

Erreur 4 error C2061: erreur de syntaxe : identificateur 'FIGURE_TYPE' c:\users\jim\documents\c++\roguelike\roguelike\interface utilisateur.h 14 1 roguelike

  • Que pensez-vous Figure:: est en train de faire? Pensez-vous Figure est un espace de noms? Un type? Ou quelque chose d'autre? (Il est difficile de corriger votre incompréhension quand je ne sais pas ce que votre raisonnement est.)
  • Je suis désolé, Figure.h contient une déclaration de classe appelé la la Figure. Je pensais que la Figure:: était-ce un moyen de faire référence à elle.
  • Veuillez inclure la totalité du message d'erreur. Ce message est une explication de ce qu'est le mal et où.
  • J'ai ajouté tout le code dont vous aurez besoin et les rapports d'erreur.
  • Et bien c'est votre problème. Je ne suis pas sûr de savoir pourquoi vous avez pensé, mais c'est 100% faux. Seulement un espace de noms ou d'un type de classe va avant ::. (D'où le message d'erreur.)
  • Figure est un type de classe. Vous avez tort. L'OP de la syntaxe et de la compréhension est correcte à 100%.
  • Ce qui devrait être utilisé par opposition à ::?
  • La réponse correcte est donnée ci-dessous.
  • La question a changé. Maintenant la Figure est un type de classe. Il est encore difficile de dire si sa compréhension est correcte. Il n'est pas clair s'il pense qu'il devrait utiliser Figure:: parce que c'est le nom de la classe ou parce que c'est le nom du fichier d'en-tête.
  • Oh, jamais l'esprit que.
  • Figure.h contains a class declaration called Figure 13 minutes auparavant, deuxième commentaire. Je suis convaincu que les OP comprend son code.
  • Malheureusement, ils sont nécessaires pour comprendre le contexte qui est toujours d'actualité, et DONC ne me permet pas de les modifier. Je vais laisser les commentaires postérieurs clarifier les précédents.

InformationsquelleAutor James Hurley | 2013-01-26