兄弟们给个纯虚函数的例子给我
写了一个纯虚函数的接口类,但是总也编译不过
有时间的朋友,可以帮忙看看问题出在哪
没有时间的,直接贴一个纯虚函数的例子给咱看看
我语法可能有哪里没搞清楚。
---------------------------------------------------
#include <iostream>
#include <string>
#include <memory>
#include <stdlib.h>
using namespace std;
class Action
{
public:
virtual ~Action();
virtual void operator()() = 0;
virtual Action *clone() const = 0;
};
class Button
{
public:
Button( const string &label )
: m_label( label ), m_action( 0 ) {}
void setAction( const Action *newAction )
{
Action *tmp = newAction->clone();
delete m_action;
m_action = tmp;
}
void onClick() const
{
if( m_action )
( *m_action )();
}
private:
string m_label;
Action *m_action;
};
class PlayMusic : public Action
{
public:
PlayMusic( const string &songFile )
:m_song( songFile ) {}
~PlayMusic() {}
void operator()()
{
cout << "PlayMusic " << m_song << endl;
}
Action *clone() const
{
return (Action *)this;
}
private:
string m_song;
};
int main(int argc, char *argv[])
{
Button *b = new Button( "Anoko no namaewa" );
// auto_ptr<PlayMusic>
// song( new PlayMusic( "AnokoNonamaewa.mp3" ) );
PlayMusic song( "AnokoNonamaewa.mp3" );
system("PAUSE");
return 0;
}
问题点数:50、回复次数:9Top
1 楼kunp(一天一小步)回复于 2006-03-14 15:56:36 得分 0
靠,注释掉
//virtual ~Action();
就可以编译通过了,日哦Top
2 楼ykzhujiang(朱朱)回复于 2006-03-14 15:58:29 得分 10
action类的析构函数没有实现亚Top
3 楼kunp(一天一小步)回复于 2006-03-14 16:00:23 得分 0
to ykzhujiang(朱朱)
要实现action类的析构函数,应该怎么写?
C++语法真是讨厌的要命阿。Top
4 楼ykzhujiang(朱朱)回复于 2006-03-14 16:02:38 得分 20
Action::~Action()
{
//your code
}Top
5 楼kunp(一天一小步)回复于 2006-03-14 16:05:59 得分 0
大哥,我的~Action()声明是一个纯虚函数阿Top
6 楼kunp(一天一小步)回复于 2006-03-14 16:22:18 得分 0
查了一下,貌似纯虚的析构函数也需要定义,无语了Top
7 楼yuanchuang(元创)回复于 2006-03-14 16:46:29 得分 0
混分,嘻嘻,得分还是去年的事了。Top
8 楼healer_kx(甘草(楼主揭贴吧,我们这些上班灌水的也不容易))回复于 2006-03-14 16:51:11 得分 20
最好的例子就是
Shape类,提供个OnDraw虚函数,然后派生个Line啊,Rect啊什么的。
实例的Shape指针放在一个list里。
然后在View的OnPaint函数里,遍历这个list,然后都把它们给Draw出来。
Top
9 楼pagechen(天外飞来的仙)回复于 2006-03-14 16:55:37 得分 0
ftTop




