Я использую следующий заголовок 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 "
Кто-нибудь знает, что я делаю неправильно? Заранее спасибо за указатели.
Вы должны 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);
};
Node::NAVIGATION
, он должен работать