symbian的C++摸索二

通过《symbian的C++摸索一》我知道了继承要加上public,现在关心如何让子类必须要实现一个方法呢?symbian似乎并不能用abstract关键字。

#bb0000 identifier 'abstract' 

我留意到M类的方法全是virtual,同时留意到每个方法后面都是“=0”,估计这就是abstract的意思。修改《symbian的C++摸索一》里的Vehicle.h

#include <e32base.h>
#include 
<e32std.h>
#include 
<e32cons.h>            // Console
class CVehicle
{
public:
    CVehicle();
    
virtual ~CVehicle();
    
virtual void Run(CConsoleBase* aConsole)=0;
};

 

子类

#include "Vehicle.h"
class CAutocycle: public CVehicle
{
public:
    CAutocycle();
    
virtual ~CAutocycle();
    
void Run(CConsoleBase* aConsole);
    
void Jump(CConsoleBase * aConsole);
};

Autocycle.cpp
#include "Autocycle.h"

CAutocycle::CAutocycle(){}

CAutocycle::
~CAutocycle(){
}
void CAutocycle::Jump(CConsoleBase * aConsole)
{    
    aConsole
->Write(_L("Autocycle is jumping..\n"));
}

void CAutocycle::Run(CConsoleBase * aConsole)
{
    aConsole
->Write(_L("Autocycle is runing..\n"));

 

测试以上代码

LOCAL_C void MainL()
{    
    console
->Write(_L("Hello, world!\n"));
    CVehicle
* veh;
    CAutocycle cycle;//如果没有实现Run方法,编译时报错
    veh 
= &cycle;
    veh
->Run(console);
    console
->Getch();
}

如果CAutocycle如果没有实现Run方法,编译时报错:

illegal use of abstract class ('CVehicle::Run(CConsoleBase *)')



posted @ 2009-12-08 10:28  生命体验之kevin-Y  阅读(241)  评论(0)    收藏  举报