Мой код ниже генерирует ошибку
'WorldObject': [Базовый класс не определен (перевод с немецкого)]
Почему это? Вот код, который выдает эту ошибку:
ProjectilObject.h:
#pragma once
#ifndef _PROJECTILOBJECT_H_
#define _PROJECTILOBJECT_H_
#include "GameObjects.h"
class WorldObject;
class ProjectilObject: public WorldObject
{
public:
ProjectilObject(IGameObject* parent,int projectiltype);
void deleteyourself();
protected:
virtual void VProcEvent( long hashvalue, std::stringstream &stream);
virtual void VInit();
virtual void VInitfromStream( std::stringstream &stream );
virtual void VonUpdate();
virtual void VonRender();
private:
vec3 vel;
float lifetime;
float lifetimeend;
vec3 target;
int m_projectiltype;
};
#endif
Вот файл кода из класса WorldObject:
GameObjects.h:
#pragma once
#ifndef _GAMEONJECTCODE_H_
#define _GAMEONJECTCODE_H_
#include "IGameObject.h"
#include "Sprite.h"
#include "GamePath.h"
#include "HashedString/String.h"
#include "IAttribute.h"
#include "CharacterObjects.h"
...
class WorldObject: public IGameObject, public MRenderAble
{
public:
WorldObject(IGameObject* parent);
virtual bool IsDestroyAble();
virtual bool IsMageAble();
virtual bool IsRenderAble();
protected:
virtual void VProcEvent( long hashvalue, std::stringstream &stream);
virtual void VonUpdate();
virtual void VonRender();
virtual void VInit() =0;
virtual void VInitfromStream( std::stringstream &stream ) =0;
virtual void VSerialize( std::stringstream &stream );
vec3 poscam;
};
...
#endif
В этом файле есть еще какие-то классы, но я не думаю, что они должны иметь значение. Может быть, есть крошечная ошибка, которую я не видел, но я не понимаю, почему эта ошибка возникает. Когда вам нужно больше кода, не стесняйтесь.
MRenderable
вместоMRenderAble
? Кроме того, у вас есть круговые зависимости между двумя файлами. Вместо этого вам нужна предварительная декларация. - person chris   schedule 20.05.2012MRenderable
иMRenderAble
не имеют отношения к проблеме. Я думаю.MRenderAble
— еще один класс, который я создал в файле IAttribute.h. - person JimRaid   schedule 20.05.2012GameObjects.h
форвардного объявленияProjectilObject.h
, вероятно, будет достаточно. - person chris   schedule 20.05.2012