Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

成員函式指標

0 views
Skip to first unread message

VAMPYR

unread,
Apr 17, 1998, 3:00:00 AM4/17/98
to

==============================================
class BASE
{
public:
void (BASE::*member_func_ptr)(void);
};

class HERO : public BASE
{
public:
void action(void);
};

void main()
{
class HERO Vampyr;

Vampyr.member_func_ptr = &Vampyr::action;
}
================================================

如同你看到的,class HERO繼承自class BASE,而C++規定父類別
的指標可以指向子孫輩,但為什麼不能把Vampyr的action函式指標
放入到 Vampyr.member_func_ptr ?


Thesis加油!

unread,
Apr 19, 1998, 3:00:00 AM4/19/98
to

※ 引述《vam...@ms1.accmail.com.tw (VAMPYR)》之銘言:

就我所知,父類別之指標可以指向子孫輩應是指將父類別指標設定為子孫輩物件
且就僅限於此,程式中的 HERO class 繼承自 BASE class 即 HERO class 已擁
有 BASE class 之 protected 及 public 之 functions 及 data members 之使
用權,何以還要以一父類別中之一指標成員來指向它,且此似乎有違 class 之
設計理念,因為越上層的類別要越 common,而越下層的類別則是越 specific
故應當是在子孫類別的函式使用所想要的父類別之函式才是吧!!!!

以上所述,如有謬誤,尚請指證,謝謝!!!
--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: thccy11.Oz.nthu.edu.tw

落魄的失敗者

unread,
Apr 20, 1998, 3:00:00 AM4/20/98
to

==> 在 Lana...@bbs.cs.nthu.edu.tw (Thesis加油!) 的文章中提到:
: ※ 引述《vam...@ms1.accmail.com.tw (VAMPYR)》之銘言:

: > ==============================================
: > class BASE
: > {
: > public:
: > void (BASE::*member_func_ptr)(void);
: > };
: > class HERO : public BASE
: > {
: > public:
: > void action(void);
: > };
: > void main()
: > {
: > class HERO Vampyr;
: > Vampyr.member_func_ptr = &Vampyr::action;
: > }
: > ================================================
: > 如同你看到的,class HERO繼承自class BASE,而C++規定父類別
: > 的指標可以指向子孫輩,但為什麼不能把Vampyr的action函式指標
: > 放入到 Vampyr.member_func_ptr ?

member_func_ptr 的 type 是 void (BASE::*)(void)
而 Vampyr::action 的 type 則是 void (HERO::*)(void)
so .... type mismatch
對了 compiler 出現的 error mesage 是啥???

--
假如人的能力以他的腦細胞利用率來衡量
那號稱本世最聰明的愛茵斯坦
也不過是一堆超級大白癡中最聰明的一個罷了

0 new messages