Я создаю класс, в котором я определил структуру с именем «Комната», которую я объявил как частную в заголовочном файле.У меня есть несколько открытых функций, которые требуют «Комната» в качестве аргумента.Когда я компилирую (в g ++), я получаю сообщение об ошибке:
Graph.h:42:17: error: "Room" has not been declared
Тем не менее, здесь находится объявление (весь заголовочный файл):
#ifndef GRAPH_H
#define GRAPH_H
#include <iostream>
#include <string>
using namespace std;
class Graph {
public:
// destructor
~Graph();
// copy constructor
Graph(const Graph &v);
// assignment operator
Graph & operator = (const Graph &v);
//Create an empty graph with a potential
//size of num rooms.
Graph( int num );
//Input the form:
//int -- numRooms times
//(myNumber north east south west) -- numRooms times.
void input(istream & s);
//outputs the graph as a visual layout
void output(ostream & s) const;
//Recursively searches for an exit path.
void findPath( Room start );
//Moves room N E S or W
void move( Room &*room , String direction );
//inputs the starting location.
void inputStart( int start );
//Searches the easyDelete array for the room with the
//number "roomNumber" and returns a pointer to it.
const Room * findRoom( int roomNumber );
private:
struct Room
{
bool visted;
int myNumber;
Room *North;
Room *East;
Room *South;
Room *West;
};
int numRooms;
int _index;
int _start;
Room ** easyDelete;
string * escapePath;
Room * theWALL;
Room * safety;
};
#endif
Вам не разрешено использовать структурыопределены в заголовочном файле в качестве аргументов?Если да, то какой обходной путь?
Спасибо.