头文件中未声明的标识符错误,适用于cpp文件

时间:2018-06-12 20:05:38

标签: c++ stl

我试着把这个问题弄清楚没有运气,所以希望它不会重复。

我已经在基于SDL的图形"游戏"中为uni项目实现了A *寻路算法,您可以在其中选择起点和终点,算法会计算出路径和将STL向量放入其中。

问题是我可以在cpp文件中声明向量没问题,但我需要它在头文件中,因为我需要在其他地方重用它,但是如果我在声明中声明完全相同的向量标题,它表示"未声明的标识符",即使我清楚地包含了库,因为它在cpp文件中工作。

这是MapSearchNode类:

#ifndef MapSearchNode_hpp
#define MapSearchNode_hpp
#include "stlastar.h"
#include "map.hpp"

class MapSearchNode
{
public:
    int x;     // the (x,y) positions of the node
    int y;

    MapSearchNode() { x = y = 0; }
    MapSearchNode( int px, int py ) { x=px; y=py; }

    float GoalDistanceEstimate( MapSearchNode &nodeGoal );
    bool IsGoal( MapSearchNode &nodeGoal );
    bool GetSuccessors( AStarSearch<MapSearchNode> *astarsearch, MapSearchNode *parent_node );
    float GetCost( MapSearchNode &successor );
    bool IsSameState( MapSearchNode &rhs );
    void PrintNodeInfo();
};
#endif

这是Game类,它在cpp文件中有实际的A *和游戏代码

#ifndef Game_hpp
#define Game_hpp
#include <iostream>
#include <vector>
#include "SDL2/SDL.h"
#include "SDL2_image/SDL_image.h"
#include "textureManager.hpp"
#include "gameObject.hpp"
#include "map.hpp"
#include "MapSearchNode.hpp"

class Game{
public:
    Game();
    ~Game();

    void init(const char* title, int xpos, int ypos, int width, int height, bool fullscreen);

    void handleEvents();
    void update();
    void render();
    void clean();
    int gethRes(){return hRes;};
    int getvRes(){return vRes;};
    bool isRunning(){return running;};
    static SDL_Renderer* renderer;

private:
    int hRes = 640;
    int vRes = 640;
    bool running; //Se il gioco sta girando o no.
    SDL_Window *window; //Finestra del gioco
    const int startX = 4;
    const int startY = 3;
    const int endX = 19;
    const int endY = 3;

};

#endif /* Game_hpp */

如果我试图声明:

std::vector<MapSearchNode*> directions;

在这个头文件中,它给了我错误。

0 个答案:

没有答案