游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1821|回复: 3

抽象类实例化的问题

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2007-9-5 13:17:00 | 显示全部楼层 |阅读模式
声明如下
class CAllocateHierarchy:public ID3DXAllocateHierarchy
{
public:
        STDMETHOD(CreateFrame)(THIS_ LPCTSTR Name,LPD3DXFRAME *ppNewFrame);
        STDMETHOD(CreateMeshContainer)(        THIS_ LPCSTR Name,
                                                                        CONST D3DXMESHDATA *pMeshData,
                                                                        CONST D3DXMATERIAL *pMaterials,//材质指针
                                                                        CONST D3DXEFFECTINSTANCE *pEffectInstances,//效果
                                                                        DWORD NumMaterials,//材质数
                                                                        CONST DWORD *pAdjacency,//邻接信息
                                                                        LPD3DXSKININFO pSkinInfo,//蒙皮信息
                                                                        LPD3DXMESHCONTAINER *ppNewMeshContainer
                                                                        );
        STDMETHOD(DestroyFrame)(THIS_ LPD3DXFRAME pFrameToFree);
        STDMETHOD(DestroyMeshContainer)(THIS_ LPD3DXMESHCONTAINER pMeshContainerBase);
        CAllocateHierarchy(CSkinMesh *pSkinMesh) :m_pSkinMesh(pSkinMesh) {}
        CSkinMesh*        m_pSkinMesh;
        //处理网格数据的类,调用该类的一个方法生成蒙皮
};
并且对 声明的几个方法进行了实现
HRESULT        CAllocateHierarchy::CreateFrame(LPCTSTR Name,LPD3DXFRAME *ppNewFrame)
{
        HRESULT hr=S_OK;
        D3DXFRAME_DERIVED *pFrame;
        *ppNewFrame=NULL;
        pFrame=new D3DXFRAME_DERIVED;
        if(pFrame==NULL)
        {
                hr=E_OUTOFMEMORY;
                goto e_Exit;
        }
        hr=AllocateName(Name,(LPTSTR *)&pFrame->Name);
        if(FAILED(hr))
                goto e_Exit;
        //初始化帧的数据
        D3DXMatrixIdentity(&pFrame->TransformationMatrix);
        D3DXMatrixIdentity(&pFrame->CombinedTransformationMatrix);
        pFrame->pMeshContainer = NULL;
    pFrame->pFrameSibling = NULL;
    pFrame->pFrameFirstChild = NULL;
       
    *ppNewFrame = pFrame;
    pFrame = NULL;
        e_Exit:
    delete pFrame;
    return hr;
}
这里只写一个了  其他的几个也分别有
问题出在调用的时候
        CAllocateHierarchy Alloc(this);
        D3DXFrameDestroy(m_pFrameRoot,&Alloc);
在别的类中调用这2步的时候  因为CAllocateHierarchy中方法声明是抽象的
发生 抽象类不能实例化 的错误   请问要怎么改 才可以呢????

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-9-6 14:16:00 | 显示全部楼层

Re:抽象类实例化的问题

这是你的设计问题,既然都是抽象类了,干嘛去实例化。
既然是要实例化的,干嘛弄成抽象类。

9

主题

102

帖子

343

积分

中级会员

Rank: 3Rank: 3

积分
343
发表于 2007-9-7 16:03:00 | 显示全部楼层

Re: Re:抽象类实例化的问题

Enigmaya: Re:抽象类实例化的问题

这是你的设计问题,既然都是抽象类了,干嘛去实例化。
既然是要实例化的,干嘛弄成抽象类。


没错

6

主题

47

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2007-9-7 16:25:00 | 显示全部楼层

Re:抽象类实例化的问题

你可能是遗漏了什么。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-21 22:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表