Enum не был объявлен

0

Я использую следующий заголовок Node.h:

/*
    INCLUDE PROTECTION
*/
#ifndef NODE_H_INCLUDED
#define NODE_H_INCLUDED

/*
    Include
*/
#include <vector>
#include <unordered_map>
//#include "NodeConnection.h"
#include "Tile.h"
#include "Network.h"

/*
    Declarations
*/
class Network;
class NodeConnection;

class Node {
    private:

        Tile* tile;

        std :: vector <NodeConnection*> connections;
        std :: unordered_map <Node*, NodeConnection*> connectionmap;

    public:

        /* Enumeration */

        enum NAVIGATION {
            RIGHT = 0, 
            UP = 1, 
            LEFT = 2, 
            DOWN = 3
        };

        Node (Tile* _tile);

        void FindNeighbours(Board* board, Network* network);

        void SetNodeConnection(Node* node, NodeConnection* nodeconnection);

};

struct TileNavigation {
    Tile* tile;
    enum Node :: NAVIGATION navigation;
};

#endif

И следующее в заголовке NodeConnection.h:

/*
    INCLUDE PROTECTION
*/
#ifndef NODECONNECTION_H_INCLUDED
#define NODECONNECTION_H_INCLUDED

/*
    Include
*/
#include <string>
#include "Node.h"

/*
    Declarations
*/
class Node;
struct Nodes;


enum ConnectionType {
    WALLCONN, PATHCONN, UNKNOWN
};

class NodeConnection {
    private:

        enum ConnectionType contype;

        struct Nodes;

    public:

        //NodeConnection ();
        NodeConnection (Node* a, Node* b,  NAVIGATION initial_nav);
};

struct Nodes {

    Node* left;
    Node* right;
    std :: string steps;

};

#endif

Я пробовал Node :: NAVIGATION и NAVIGATION, но он все время говорит мне, что

"   'NAVIGATION' has not been declared   "

Кто-нибудь знает, что я делаю неправильно? Заранее спасибо за указатели.

Теги:
enums

1 ответ

2
Лучший ответ

Вы должны circuit-include выпуск. Node.h и NodeConnection.h включают друг друга.

Исправить:

Вперед объявите Nodeconnection в Node.h, удалите #include "NodeConnection.h" из Node.h, чтобы сломать circuit-including проблему.

//#include "NodeConnection.h"  // 
class Network;
class NetworkConnection; // forward declare NetworkConnection
class Node {
//..
};

включить NodeConnection.h в файл Node.cpp.

#include "NodeConnection.h"

используйте Node::NAVIGATION в NodeConnection.h

class NodeConnection {
private:

    //enum ConnectionType contype;  don't need to use enum keyword again.
    ConnectionType contype;

public:

    //NodeConnection ();
    NodeConnection (Node* a, Node* b,  Node::NAVIGATION initial_nav);

};

  • 0
    Это не решило проблему: S Спасибо за совет, хотя
  • 1
    должен использовать Node::NAVIGATION , он должен работать
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню