游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4055|回复: 5

OGRE中不能实例化抽象类。

[复制链接]

18

主题

78

帖子

165

积分

注册会员

Rank: 2

积分
165
发表于 2008-1-28 23:36:00 | 显示全部楼层 |阅读模式
我们知道:一个类中有了一个纯虚函数就成为了抽象类,编译器可以保证ABC不能实例化。

我是模仿写OGRE海洋的例子程序但是一开始就出现:不能实例化抽象类

主要是我的帧监听继承了:
public OIS::KeyListener,public OIS::MouseListener
只要继承了这两个基类就不行,就无法实例化抽象类。但是例子有可以。

代码如下:
#ifndef _MyOgreDemo_H_
#define _MyOgreDemo_H_
#include "Ogre.h"
#include "OgreConfigFile.h"
#include "OgreStringConverter.h"
#include "OgreException.h"
#include "OgreString.h"
#include "CEGUI/CEGUI.h"
#include <OIS/OIS.h>
#include "CEGUI/CEGUIForwardRefs.h"
#include "OgreCEGUIRenderer.h"
#include "OgreFrameListener.h"
#include <cstdlib>

#define UVECTOR2(x, y) UVector2(cegui_reldim(x), cegui_reldim(y))//窗口点换算

class MyOgreDemo_FrameListener : public Ogre::FrameListener, public OIS::KeyListener,public OIS::MouseListener//就在这类继承了OIS类,有它就不行。
{
public:
        MyOgreDemo_FrameListener(MyOgreDemo* main)
        {
        };
        MyOgreDemo_FrameListener()
        {
        };
        virtual ~MyOgreDemo_FrameListener()
        {
        };

        bool frameStarted(const Ogre::FrameEvent& evt);
};

MyOgreDemo_FrameListener mFrameListener;//这里想实例化,就报出:不能实例化抽象类的错

但是我是按着例子来的,为什么会这样的,难道是和设计模式关系上了,我对它比较生疏的。

请能者赐教!
先3Q了
[em17] [em17] [em17]

6

主题

42

帖子

47

积分

注册会员

Rank: 2

积分
47
发表于 2008-1-29 10:54:00 | 显示全部楼层

Re:OGRE中不能实例化抽象类。

这个跟设计模式没关系
你继承了OIS类  这两个都是抽象类
你需要在继承的类当中实现抽象类的纯虚函数
才能实例化

Ogre例子里做了  你没做

18

主题

78

帖子

165

积分

注册会员

Rank: 2

积分
165
 楼主| 发表于 2008-1-31 18:16:00 | 显示全部楼层

Re:OGRE中不能实例化抽象类。

多谢楼上指点。问题就是在于没有在继承的类当中实现抽象类的纯虚函数
如果继承了public OIS::KeyListener,要重载下面两个函数
        virtual bool keyPressed ( const OIS::KeyEvent &arg );
        virtual bool keyReleased ( const OIS::KeyEvent &arg );
如果继承了public OIS::MouseListener要重载下面三个函数
        virtual bool mouseMoved ( const OIS::MouseEvent &arg );
        virtual bool mousePressed ( const OIS::MouseEvent &arg, OIS::MouseButtonID id );
        virtual bool mouseReleased ( const OIS::MouseEvent &arg, OIS::MouseButtonID id );

3Q了。

11

主题

53

帖子

61

积分

注册会员

Rank: 2

积分
61
发表于 2008-2-14 09:44:00 | 显示全部楼层

Re: OGRE中不能实例化抽象类。


E:/前

11

主题

53

帖子

61

积分

注册会员

Rank: 2

积分
61
发表于 2008-2-14 09:46:00 | 显示全部楼层

Re: OGRE中不能实例化抽象类。


97

主题

590

帖子

590

积分

高级会员

Rank: 4

积分
590
QQ
发表于 2008-2-15 10:39:00 | 显示全部楼层

Re:OGRE中不能实例化抽象类。

呵呵..你用的Buffered模式吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-20 01:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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