Hi guys, I still having a trouble with the following inheritance/interface code:
ResourceEntry.h
class IResourceData
{
public:
IResourceData() {};
~IResourceData() {};
};
class IResourceEntry
{
public:
virtual bool Create(IResourceEntry *data); // Can be overriden for simple resource types
virtual void Destroy() = 0;
virtual int LoadResource(char *filename, FILE *file) = 0;
virtual int SaveResource(char *filename, FILE *file) = 0;
IResourceEntry *GetData()
{ return m_pData; };
eResourceEntryType GetResourceType()
{ return m_eResourceType; };
public:
IResourceEntry();
virtual ~IResourceEntry();
protected:
IResourceEntry *m_pData;
eResourceEntryType m_eResourceType;
};
TextureResource
class CTextureResourceData : public IResourceData
{
public:
FIBITMAP *m_hFI; // A user can actually operate on this entry by using FreeImage library functions (see freeimage.h)
FREE_IMAGE_FORMAT m_TexFmt; // DO NOT CHANGE THIS!
CTextureResourceData()
{
m_hFI = NULL;
m_TexFmt = FIF_UNKNOWN;
};
~CTextureResourceData() {};
};
class CTextureResourceEntry : public IResourceEntry
{
public:
bool Create(CTextureResourceData *data)
{ return Create(data); };
void Destroy();
virtual void GenTex(int params, ...) {};
virtual int LoadResource(char *filename, FILE *file);
virtual int SaveResource(char *filename, FILE *file);
void CreateAlphaChannel(RGBA color);
public:
CTextureResourceEntry()
{
Create(new CTextureResourceData);
m_eResourceType = RESOURCETYPE_TEXTURE;
};
virtual ~CTextureResourceEntry();
private:
string m_strTexFilename; // File name
};
The problem is, when I create a CTextureResourceEntry (thru new operator to a pointer), it calls IResourceEntry constructor - and that''s I don''t need to happen. How can I go around it so it calls ONLY ITS OWN constructor?
E.g CTextureResourceEntry will be calling ONLY its constructor, and other classes derived from CTextureResourceEntry ( say, CMaterialResourceEntry) will also be calling only thier constructor and not the derived ones?
Thanks.
" Do we need us? "
Ionware Productions - Games and Game Tools Development