ожидаемое имя класса до ‘{‘ токена, наследование класса

У меня проблема с файлом моего проекта, я думаю, что это вызвано некоторыми проблемами с включением. Сам код работал нормально, но так как я изменил некоторые строки в некоторых других файлах, я получаю сообщение об ожидаемом имени класса перед {token ‘. Я уже пытался использовать предварительные объявления, но с ними ошибка меняется на «недопустимое использование неполного типа« класс Entity »(строки отчета о сборке в конце сообщения).

EntityPlayer.h

#ifndef _SHARED_GAME_ENTITY_ENTITYPLAYER_H_
#define _SHARED_GAME_ENTITY_ENTITYPLAYER_H_

//////////////////////////////////////////////////
//////////////////// INCLUDES ////////////////////
//////////////////////////////////////////////////#include<array>
#include<iostream>
#include<windows.h>
#include<SFML/System.hpp>

#include<Shared/Game/Entity/Entity.h>
#include<Shared/Game/ItemStack.h>
#include<Shared/Game/Items.h>
#include<Shared/System/Types.h>

//////////////////////////////////////////////////
////////// STRUKTUREN; KLASSEN; OBJEKTE //////////
//////////////////////////////////////////////////

//class Entity; //forward declaration of 'class Entity' -> invalid use of incomplete type 'class Entity' line 27
class ItemStack;
class Items;

class EntityPlayer : public Entity{ //line 27
public:
struct PlayerStats{
int health;
};

EntityPlayer(const std::string ID, const GameMode mode);
virtual ~EntityPlayer();
virtual void                       update();
virtual void                       setGameMode(const GameMode mode);
virtual bool                       isInventoryOpen();
virtual bool                       isInInventory(ItemStack* item);
virtual bool                       removeFromInventory(ItemStack *item);
virtual uint                       addToInventory(ItemStack* item);
virtual PlayerStats                getPlayerStats();
virtual AABB                       getAABB();
virtual std::array<ItemStack*, 10> getHotbarItems();
virtual std::array<ItemStack*, 40> getInventory();

protected:
virtual bool isInventorySlotFree();
virtual bool isHotbarSlotFree();
virtual bool addToHotbarSlot(ItemStack* itemstack);

bool                       m_inventoryOpen;
bool                       m_ltp;
GameMode                   m_mode;
PlayerStats                m_stats;
std::array<ItemStack*, 10> m_itemsHotbar;
std::array<ItemStack*, 40> m_inventory;
};

//////////////////////////////////////////////////
/////////////////// PROTOTYPEN ///////////////////
//////////////////////////////////////////////////#endif // _SHARED_GAME_ENTITY_ENTITYPLAYER_H_

Entity.h

#ifndef _SHARED_GAME_ENTITY_ENTITY_H_
#define _SHARED_GAME_ENTITY_ENTITY_H_

//////////////////////////////////////////////////
//////////////////// INCLUDES ////////////////////
//////////////////////////////////////////////////

#include<map>
#include<iostream>
#include<windows.h>

#include<Shared/Game/World.h>
#include<Shared/System/Defines.h>
#include<Shared/System/Log.h>
#include<Shared/System/Types.h>

//////////////////////////////////////////////////
////////// STRUKTUREN; KLASSEN; OBJEKTE //////////
//////////////////////////////////////////////////

class World;

class Entity{
friend class GameRegistry;

#ifdef CLIENT
friend class GameRenderer;
#endif // CLIENT

public:
Entity(const std::string ID, const std::string texture);
virtual ~Entity();
virtual void        update();
virtual bool        linkWorld(World* world);
virtual bool        isWorldLinked();
virtual bool        setPosition(const Vec3d position);
virtual bool        move(const Vec2zd value);
virtual bool        move(const double x, const double z);
virtual float       getRotation();
virtual Vec3d       getPosition();
virtual std::string getID();
virtual std::string getTextureName();
virtual std::string getTextureLocation();
virtual AABB        getAABB();

protected:
virtual int getNumericID();

int         m_numericID;
float       m_rotation;
World*      m_world;
Vec3d       m_position;
std::string m_id;
std::string m_texture;

public:
static bool   isEntityRegistered(const std::string name);
static Entity getEntityCopy(const std::string name);

protected:
static std::map<std::string, Entity*> m_entitys;
};

//////////////////////////////////////////////////
/////////////////// PROTOTYPEN ///////////////////
//////////////////////////////////////////////////#endif // _SHARED_GAME_ENTITY_ENTITY_H_

Ошибка ‘ожидаемое имя класса до’ {‘token’:

In file included from src/Shared/Game/CraftingManager.h:13:0,
from src/Shared/Game/GameRegistry.h:16,
from src/Shared/Game/Blocks.h:18,
from src/Shared/Game/World.h:12,
from src/Shared/Game/Entity/Entity.h:12,
from E:\MasterS\Projekte\C++\Spiele\Project 008\src\Shared\Game\Entity\Entity.cpp:1:
src/Shared/Game/Entity/EntityPlayer.h:28:35: error: expected class-name before '{' token
class EntityPlayer : public Entity{
^

Ошибка «недопустимое использование неполного типа»:

In file included from src/Shared/Game/CraftingManager.h:13:0,
from src/Shared/Game/GameRegistry.h:16,
from src/Shared/Game/Blocks.h:18,
from src/Shared/Game/World.h:12,
from src/Shared/Game/Entity/Entity.h:12,
from E:\MasterS\Projekte\C++\Spiele\Project 008\src\Shared\Game\Entity\Entity.cpp:1:
src/Shared/Game/Entity/EntityPlayer.h:28:29: error: invalid use of incomplete type 'class Entity'
class EntityPlayer : public Entity{
^
src/Shared/Game/Entity/EntityPlayer.h:24:7: error: forward declaration of 'class Entity'
class Entity; //forward declaration of 'class Entity' -> invalid use of incomplete type 'class Entity' line 27
^

Я не знаю, какие из включенных файлов вам понадобятся, чтобы помочь мне, но ни один из файлов, перечисленных в списке ошибок, не содержит включения файла Entity.h.

Заранее большое спасибо, надеюсь, вы сможете мне помочь 🙂

-1

Решение

Просто чтобы отметить это как ответ. Перефразируя обсуждение: проверьте цепочку включений, чтобы увидеть, включаете ли вы EntityPlayer.h из Entity.h.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector