如果~~
class a{
protected:
^^^^^^^^^^^
virtual int fun()=0;
}
class b : public a{
public:
int fun(){defination;}
}
void main(){
a *p;
p = new b;
p->fun;
^^^^^^^
}
compiler會告訴你。。。
p::fun is not accessible.....
為什麼會一定要宣告為public呢?
難道是有別人去呼叫它嗎?
請任何高手回答吧~~
--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: u860121.SHYR.ab.nthu.edu.tw
你有沒有寫錯啊......應該是p->fun()吧?
假如是寫錯了,那就是sytax error囉.......
--
Ξ Origin: 中興大學天樞資訊網 <b...@bbs.nchu.edu.tw> [FROM: ppp103.ppp.uday]
因為 p 的型態是 a class。
按理你使用 class a 的指標,就只能引發(invoke) class a 的 members
(即使 p 真正指向的是 class b 的物件)。
在這邊 a::fun 的 access level 是 protected,除非是繼承自 a 的物件
才能 invoke a::fun,所以 main() 當然沒這權限去存取 a::fun。
--
mbox: m...@im.fju.edu.tw
Web : http://mmlab.im.fju.edu.tw/~maa
--
[1;32m※ Origin: [33m謠 言 報 [37m<bbs.csie.fju.edu.tw> [m
[1;31m◆ From: [36madsl-nk-A1174.hitron.net [m