-1

I'm working on a game, that has a bunch of classes linked together. Was working fine but now all hell broke loose.

1>------ Build started: Project: Razoo, Configuration: Debug Win32 ------
1>  Main.cpp
1>c:\users\ronan\desktop\c++\razoo\razoo\inventory.h(62): warning C4172: returning address of local variable or temporary
1>c:\users\ronan\desktop\c++\razoo\razoo\inventory.h(65): warning C4172: returning address of local variable or temporary
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(21): error C2143: syntax error : missing ';' before '*'
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(21): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(24): error C2061: syntax error : identifier 'Room'
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(76): error C2143: syntax error : missing ';' before '*'
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(76): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(77): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(79): warning C4183: 'GetCurrentRoom': missing return type; assumed to be a member function returning 'int'
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(31): error C2065: 'm_currentRoom' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(31): error C2065: 'p_currentRoom' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(32): error C2065: 'p_inventory' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(42): error C2065: 'm_currentRoom' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(78): error C2065: 'm_currentRoom' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(108): error C2065: 'm_currentRoom' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(108): error C2227: left of '->GetNorth' must point to class/struct/union/generic type
1>          type is ''unknown-type''
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(113): error C2065: 'm_currentRoom' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(113): error C2227: left of '->GetSouth' must point to class/struct/union/generic type
1>          type is ''unknown-type''
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(118): error C2065: 'm_currentRoom' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(118): error C2227: left of '->GetEast' must point to class/struct/union/generic type
1>          type is ''unknown-type''
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(123): error C2065: 'm_currentRoom' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(123): error C2227: left of '->GetWest' must point to class/struct/union/generic type
1>          type is ''unknown-type''
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(156): error C2065: 'm_currentRoom' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(158): error C2065: 'm_currentRoom' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(158): error C2227: left of '->GetName' must point to class/struct/union/generic type
1>          type is ''unknown-type''
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(22): error C2227: left of '->GetName' must point to class/struct/union/generic type
1>          type is 'int *'
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(22): error C2228: left of '.length' must have class/struct/union
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(27): error C2227: left of '->GetName' must point to class/struct/union/generic type
1>          type is 'int *'
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(72): error C2227: left of '->GetDesc' must point to class/struct/union/generic type
1>          type is 'int *'
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(84): error C2227: left of '->GetNorth' must point to class/struct/union/generic type
1>          type is 'int *'
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(88): error C2227: left of '->GetNorth' must point to class/struct/union/generic type
1>          type is 'int *'
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(88): error C2227: left of '->GetName' must point to class/struct/union/generic type
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(91): error C2227: left of '->GetSouth' must point to class/struct/union/generic type
1>          type is 'int *'
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(95): error C2227: left of '->GetSouth' must point to class/struct/union/generic type
1>          type is 'int *'
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(95): error C2227: left of '->GetName' must point to class/struct/union/generic type
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(98): error C2227: left of '->GetEast' must point to class/struct/union/generic type
1>          type is 'int *'
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(102): error C2227: left of '->GetEast' must point to class/struct/union/generic type
1>          type is 'int *'
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(102): error C2227: left of '->GetName' must point to class/struct/union/generic type
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(105): error C2227: left of '->GetWest' must point to class/struct/union/generic type
1>          type is 'int *'
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(109): error C2227: left of '->GetWest' must point to class/struct/union/generic type
1>          type is 'int *'
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(109): error C2227: left of '->GetName' must point to class/struct/union/generic type
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(115): error C2227: left of '->GetInventory' must point to class/struct/union/generic type
1>          type is 'int *'
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(115): error C2228: left of '.Size' must have class/struct/union
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(116): error C2227: left of '->GetInventory' must point to class/struct/union/generic type
1>          type is 'int *'
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(116): error C2228: left of '.GetItemNames' must have class/struct/union
1>c:\users\ronan\desktop\c++\razoo\razoo\generalutils.h(154): warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(128): error C2143: syntax error : missing ';' before '&'
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(128): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(128): error C2061: syntax error : identifier 'HashTable'
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(129): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(214): warning C4183: 'InitializeRooms': missing return type; assumed to be a member function returning 'int'
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(216): error C2061: syntax error : identifier 'HashTable'
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(130): error C2065: 'p_filename' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(155): error C2065: 'Room' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(155): error C2065: 'temp' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(183): error C2065: 'Room' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(183): error C2146: syntax error : missing ';' before identifier 'room'
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(183): error C2065: 'temp' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(183): error C3861: 'room': identifier not found
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(185): error C2065: 'p_roomtable' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(185): error C2228: left of '.Insert' must have class/struct/union
1>          type is ''unknown-type''
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(185): error C2065: 'room' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(185): error C2228: left of '.GetName' must have class/struct/union
1>          type is ''unknown-type''
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(202): error C2065: 'p_roomtable' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(202): error C2228: left of '.Find' must have class/struct/union
1>          type is ''unknown-type''
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(202): error C2227: left of '->m_data' must point to class/struct/union/generic type
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(202): error C2228: left of '.SetNorth' must have class/struct/union
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(204): error C2065: 'p_roomtable' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(204): error C2228: left of '.Find' must have class/struct/union
1>          type is ''unknown-type''
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(204): error C2227: left of '->m_data' must point to class/struct/union/generic type
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(204): error C2228: left of '.SetSouth' must have class/struct/union
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(206): error C2065: 'p_roomtable' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(206): error C2228: left of '.Find' must have class/struct/union
1>          type is ''unknown-type''
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(206): error C2227: left of '->m_data' must point to class/struct/union/generic type
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(206): error C2228: left of '.SetEast' must have class/struct/union
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(208): error C2065: 'p_roomtable' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(208): error C2228: left of '.Find' must have class/struct/union
1>          type is ''unknown-type''
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(208): error C2227: left of '->m_data' must point to class/struct/union/generic type
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(208): error C2228: left of '.SetWest' must have class/struct/union
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(212): error C2146: syntax error : missing ';' before identifier 'level'
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(212): error C2065: 'p_roomtable' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(212): error C2228: left of '.Find' must have class/struct/union
1>          type is ''unknown-type''
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(212): error C2227: left of '->m_data' must point to class/struct/union/generic type
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(212): error C3861: 'level': identifier not found
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(213): error C2065: 'level' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(218): error C2065: 'p_filename' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(231): error C2065: 'Room' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(231): error C2065: 'currentRoom' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(253): error C2065: 'currentRoom' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(253): error C2065: 'p_rooms' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(253): error C2228: left of '.Find' must have class/struct/union
1>          type is ''unknown-type''
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(253): error C2227: left of '->m_data' must point to class/struct/union/generic type
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(263): error C2065: 'p_numItems' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(265): error C2065: 'p_items' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(265): error C2228: left of '.GetName' must have class/struct/union
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(267): error C2065: 'p_items' : undeclared identifier
1>c:\users\ronan\desktop\c++\razoo\razoo\initializer.h(272): error C2065: 'currentRoom' : undeclared identifier
1>d:\programs\microsoft visual studio 11.0\vc\include\regex(1670): fatal error C1903: unable to recover from previous error(s); stopping compilation
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

I though that I had a mismatched brace somewhere, or a missing ; at the end of a class, but I literally checked every single one in the code I so I think I ruled that out.

Working from the first error:

1>c:\users\ronan\desktop\c++\razoo\razoo\player.h(21): error C2143: syntax error : missing ';' before '*'

and the code it points to:

    #ifndef PLAYER_H
#define PLAYER_H

#include <string>
#include <fstream>

#include "Room.h"
#include "Inventory.h"
#include "Array.h"


class Player
{
private:
    string m_name;
    int m_health;
    int m_confidence;
    int m_humor;
    int m_speed;
    Room* m_currentRoom; //Line 21
    Inventory m_inventory;

It looks to me like the #include "Room.h" isn't working properly?
Do I have some sort of circular dependencies mixed up(I don't even fully understand them right now)?
Or is there some other "common" problem that would invoke all of these errors together?
First post on here, so not sure if you need some more code or anything (or if i screwed up any synthax!)
Thanks!

Resinderate
  • 1
  • 1
  • 2
  • Are you setting up a circular inclusion between your header files? – Andy Prowl May 11 '13 at 10:26
  • 2
    Does Room.h include player.h? – billz May 11 '13 at 10:27
  • What change did you make that caused all hell to break loose? – Beta May 11 '13 at 10:29
  • In case you are setting up a circular inclusion between your header files, and you are expecting your include guards to protect you from possible errors, see [this Q&A](http://stackoverflow.com/questions/14909997/why-arent-my-include-guards-preventing-recursive-inclusion-and-multiple-symbol). – Andy Prowl May 11 '13 at 10:30
  • 1
    Try replacing `#include "Room.h"` with just `class Room;`. – Joachim Isaksson May 11 '13 at 10:32
  • @Beta I was adding some functions to my Room class, that allowed it to assign a random Enemy to it's Enemy* m_enemy, and something similar for adding a Item to it's m_inventory. I took out all the stuff I implemented afaik, but it still remained. (I've been awake for a long time so maybe I missed something. – Resinderate May 11 '13 at 10:36
  • 1
    A possible reason for the error is if you've copy/pasted include guards and forgot to change the name, for example if `Room.h` has an include guard stating `#ifdef PLAYER_H`. – Joachim Isaksson May 11 '13 at 10:36
  • You shouldn't have to backtrack by hand and by your own memory; source control will save you a lot of headaches, especially when you're short on sleep. – Beta May 11 '13 at 10:39

1 Answers1

0

You might be able to resolve the circular dependency here by removing #include "Room.h" from "Player.h" and replacing the line with this:

class Room;

This will work fine because it appears you're only using a pointer to the Room class. In Player.cpp, you would do this at the top if you need Room's methods and members or if you're ever dereferencing the pointer:

#include "Player.h"
#include "Room.h"

If this doesn't work, could you post more code?

user123
  • 8,970
  • 2
  • 31
  • 52