🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: japan.comp.lang.visual-c++
Article #16

Re: 特定のクラスだけに特定の操作を

#16
From: synsyr
Date: Fri, 05 May 2000 00:00
36 lines
2539 bytes
椎野さん、こんにちは、鶴田(synsyr)です。

Yuki Shiino <yuki@cds.ne.jp> wrote:
> 鶴田さんの記事<8esare$434$1@nwms2.odn.ne.jp>から
> > > 特定のクラスAにだけは公開したい操作Xがあります。
> > > しかし、その他のクラスB,Cには非公開としたいです。
> > > しかも、クラスAに公開したいのはXだけなので、他の操作を公開したく
> > > ありません。
> > 
> > 操作Xを基底クラスXとして作成し、friend宣言でクラスAを指定、
> > 操作X以外は継承を用いて作成するのはどうでしょうか?
> 
>  操作Xを基底クラスのprotectedメンバとして、これをクラスAで
> 継承します。操作X以外は鶴田さんと同じ様にやはり継承を使います。
> (つまりfriendの代わりにprotectedを使うだけ。)
> 
>  鶴田さんの方法との違いは、
> ・クラスA以外にも操作Xを利用できるクラスを後から増やせる。
> ・クラスAの派生クラスも操作Xを利用できる。
> といったところでしょうか。
> 
>  特定の(限定された)クラスにアクセス特権を認める方法は、多分
> protectedとfriendしかない筈です。(そしてfriendの方が厳しい。)
>  どちらが良いかはケースバイケースです。

ええっと、クラスAが操作Xを継承してよい(つまり、クラスAが
操作Xを包含してよい場合)は、椎野さんの方法がスマートで良い
かと思うのですが、私は全く別のクラスの場合を考えていました。(^^;


>  もし宜しければ参考までにどの様な状況なのか教えて頂きたいです。
> 操作Xを含むクラスとクラスAとはどんな関係なのかとか。

そうですね。やっぱり、これがわからないと。(^^
____________________________________________________________
 鶴田 真一(as SYN, synsyr)  synsyr@pop21.odn.ne.jp
Technical Details
Message-ID: <8esm9m$26q$1@nwms2.odn.ne.jp>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <8esig5$73p$1@news.cds.ne.jp>

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 10a2c7,4de5e25cb378a14
X-Google-Attributes: gid10a2c7,public
X-Google-Thread: f71b3,4de5e25cb378a14
X-Google-Attributes: gidf71b3,public
From: synsyr <synsyr@pop21.odn.ne.jp>
Subject: Re: 特定のクラスだけに特定の操作を
Date: 2000/05/05
Message-ID: <8esm9m$26q$1@nwms2.odn.ne.jp>
X-Deja-AN: 619288779
Content-Transfer-Encoding: 7bit
References: <8esig5$73p$1@news.cds.ne.jp>
X-Forwarded: by - (DeleGate/5.9.12)
Content-Type: text/plain; charset=ISO-2022-JP
X-Complaints-To: news@odn.ad.jp
X-Trace: nwms2.odn.ne.jp 957471862 2266 143.90.130.27 (4 May 2000 20:24:22 GMT)
Organization: odn.ne.jp
Mime-Version: 1.0
NNTP-Posting-Date: 4 May 2000 20:24:22 GMT
Newsgroups: japan.comp.lang.visual-c++,fj.comp.lang.c++