Sign in to follow this  
giugio

inherit from ID3DXMesh

Recommended Posts

giugio    246
Hy . I would inherit from ID3DXMesh for add a name property for the mesh this is the code
Quote:
#pragma once #include "d3dUtility.h" using namespace std; class CMeshBase : public ID3DXMesh { public: CMeshBase(void); public: ~CMeshBase(void); string getName(); void setName(string strName); private: string m_strMeshName; };
all work fine , but this:
Quote:
HRESULT hr = D3DXCreateMeshFVF(nIndexes,nVertexes,D3DXMESH_MANAGED,Vertex::FVF,m_Device,&m_mesh);
where m_mesh is a member var = CMeshBase* m_mesh; the error is this:Error 1 error C2664: 'D3DXCreateMeshFVF' : cannot convert parameter 6 from 'CMeshBase **__w64 ' to 'LPD3DXMESH *' ps.How i insert code in the post?i use quote , but isn't correct i suppose

Share this post


Link to post
Share on other sites
janta    345
This will implicitly cast from ID3DXMesh* to CMeshBase*, which is illegal. Think The actual instance pointed to by the ID3DXMesh* returned by D3DXCreateMeshFVF is not a CMeshBase.

To achieve what you are trying you could use composition instead.


class CMeshBase
{
ID3DXMesh* m_pMesh;
string m_strMeshName;
};



Share this post


Link to post
Share on other sites
MJP    19786
You can't inherit from the actual implementation of ID3DXMesh. The actual class "ID3DXMesh" is just an in interface...it contains nothing but declarations of pure virtual functions. The actual methods are implented in some other class...it's probably a C++ class but it technically be any language that supports COM. Either way it doesn't matter, the implementation isn't exposed to you so you can't inherit from it. Inheriting from the interface doesn't gain you anything except for those pure virtual method declarations....methods that you would have to implement yourself. If you want to have your own mesh class and still make use of the ID3DXMesh functionality, you'll have to use inheritance via composition like janta suggested.

Also to post properly formatted code, you need to use the "code" or "source" tags. See the forum FAQ.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this