Моят код по-долу генерира грешката
'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