I have an abstract class, SceneObject declared as follow:
There are two more that derive from the above, an implementation...PHP Code:#ifndef SCENE_OBJECT_H
#define SCENE_OBJECT_H
#include "Application.h"
class SceneObject{
public:
SceneObject(void);
virtual ~SceneObject(void);
public:
virtual void update(Application* app)=0;
virtual void render(Application* app)=0;
};
#endif // SCENE_OBJECT_H
... and a supposed more specialized abstract class:PHP Code:#ifndef GROUP_H
#define GROUP_H
#include <vector>
#include "SceneObject.h"
class Group : public SceneObject{
private:
std::vector<SceneObject> children;
public:
Group(void);
~Group(void);
public:
void update(Application* app);
void render(Application* app);
};
#endif // GROUP_H
As you can see, Group has a vector of SceneObjects that will eventually contain Groups or Actors.PHP Code:#ifndef ACTOR_H
#define ACTOR_H
#include "SceneObject.h"
class Actor : SceneObject{
public:
Actor(void);
~Actor(void);
public:
virtual void update(Application* app)=0;
virtual void render(Application* app)=0;
};
#endif // ACTOR_H
On compile, the compiler yields
Any help is welcome.Code:c:\program files\microsoft visual studio 9.0\vc\include\vector(716) : error C2259: 'SceneObject' : cannot instantiate abstract class due to following members: 'void SceneObject::update(Application *)' : is abstract c:\documents and settings\alexandre\my documents\visual studio 2008\projects\ocaso\ocaso\sceneobject.h(13) : see declaration of 'SceneObject::update' 'void SceneObject::render(Application *)' : is abstract c:\documents and settings\alexandre\my documents\visual studio 2008\projects\ocaso\ocaso\sceneobject.h(14) : see declaration of 'SceneObject::render' c:\documents and settings\alexandre\my documents\visual studio 2008\projects\ocaso\ocaso\group.h(10) : see reference to class template instantiation 'std::vector<_Ty>' being compiled with [ _Ty=SceneObject ]




Reply With Quote