Jag kanske missförstår dig, men är det inte ett vanligt hederligt template du är ute efter?
Jag försöker skapa en relativt enkel partikelmotor. Den ska kunna hantera olika sorters partiklar, men jag vet inte riktigt hur jag går till väga genom att inplementera det. Jag postar lite kod för att visa problemet.
#ifndef _PARTICLES_H_
#define _PARTICLES_H_
class CParticle
{
public:
CParticle();
~CParticle();
virtual void Reset();
virtual void Draw()=0;
virtual void Update()=0;
public:
vec2f pos;
vec2f vel;
vec2f gravity;
float life;
};
class CParticleEngine
{
public:
CParticleEngine();
~CParticleEngine();
void Draw();
void Update();
void ClearAll();
[b]
pekare_till_den_nya_partikeln * CreateNew(particleType, float x, float y); // <---- ??
void CreateEmitter(particleType, float x=0, float y=0, float duration, float delay);// <---- ??
[/b]
private:
CParticle * m_pBase;
CParticle * m_pParticle;
};
class CSpriteParticle : public CParticle
{
public:
CParticle();
~CParticle();
void Reset();
void Draw();
void Update();
public:
CTexture * pTexture;
};
class CTextParticle : public CParticle
{
public:
CParticle();
~CParticle();
void Reset();
void Draw();
void Update();
public:
char text[50];
};
Hur ska jag deklarera funktionerna så att de kan ta ett klassnamn som argument och returnera en pekare till samma sorts objekt som de fick som argument?

