////////////////////////////////////////////////////////////////////
◎ ≪---= 業務用小型ダーツマシン「ダーツイーグル」

こんなに小さくても立派な業務マシン！
ダーツマシン設置でちょっとしたお小遣い稼ぎ。

できるだけ省スペースで、安価に置けるダーツマシンが↓ここ↓にあります。
『大阪ギフトショー新製品コンテスト大賞受賞！』
http://af1.mag2.com/m/af/0000008658/001/s00000001980002/006
////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


    (C)KAB-studio 1999 - 2006 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz

    送信日： 2006/09/25(Mon) No.375
    配信数： 1705
    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
// NEW!!
http://www.kab-studio.biz/index.html

2006/09/25 (Mon)
　ほとはー外伝３にP.72を追加！
[ 三人合体ホットハーブ 外伝３ 【ワタシ の キロク】 ]
http://www.kab-studio.biz/Comic/HotHerbA3/index.html

2006/09/25 (Mon)
　#pragma twice ホームページ版にアーカイブ追加！
16.26 static メンバ関数
16.27 static と this
[ #pragma twice ]
http://www.kab-studio.biz/Programing/PragmaTwice/index.html


////////////////////////////////////////////////////////////////////
// ちょお普通な日記
http://www.kab-studio.biz/nikki2/index.html

2006/09/17 (Sun)
　昼に友人の家に行ってフットサルとかを。あとは徹ゲー。みんなのテニス
とかHALO2とか。

2006/09/18 (Mon)
　徹ゲーして朝7時半に帰ってきて日記書いて寝て昼12時起き。ドンキで
黒烏龍茶を買ったりスニーカー買ったり吉野家の牛丼を買ったり洗濯したり。
夜に鶴見スポーツセンターでトレーニング。あとはぐだー。

2006/09/19 (Tue)
　体中がたがた。ほとはー外伝３再構成。表紙に時間掛かった。来週月曜分
と一緒に更新できるかと。ノッてきたら楽しくなって散歩お休み。

2006/09/20 (Wed)
　目覚ましx4。月曜分のほとはー外伝３描き。夕方にSPORTS DEPOに行って
フットサルシューズとか購入。帰ってからぐだー。体重を60キロまで落とし
たい理由。

2006/09/21 (Thu)
　カレンダー兼スケジューラー作り。満足するとしたくなる。夜にトレーニ
ング。そしてデンジャラス唐揚げ弁当？

2006/09/22 (Fri)
　力が抜けて何もできない。かぶヘッダーの準備とかファイルの整理とかく
らい。あとはドンキで黒烏龍茶買ったりとか。つか心労が……。

2006/09/23 (Sat)
　24日午前8時40分。昨日はまったり＆ぷらとわ書き。午後8時半にフットサル
へ。そのあとは新宿行って飲みとかカラオケとか。そしてだうなー。


////////////////////////////////////////////////////////////////////
// かぶろぐ。
http://d.hatena.ne.jp/kab_studio/

2006/09/17 (Sun)
http://d.hatena.ne.jp/kab_studio/20060917
起きたー
[KAB-studio]ぷらとわ追加。
[KAB-studio][ほとはー]ほとはー外伝３ P.71
ナノ博士レーザー（仮）
[アニメ]「牙」 第25話「戦いの序奏」
[アニメ]おねがいマイメロディ〜くるくるシャッフル！〜 
　第25話「ギャフンて言ったらイイナ！」
[アニメ]ひぐらしのなく頃に 第24話「罪滅し編　其の参　34号文書」

2006/09/18 (Mon)
http://d.hatena.ne.jp/kab_studio/20060918
帰ってきたー。
起き。
[食]吉野家牛丼復活祭
[食][水泳ダイエット]黒烏龍茶値引き情報
[水泳ダイエット]鶴見スポーツセンター
[アニメ]ARIA The NATURAL 第25話「その　出逢いの結晶は…」
[アニメ]ゼロの使い魔 第12話「ゼロの秘宝」
[アニメ]うたわれるもの 第24話「滅びゆくもの」

2006/09/19 (Tue)
http://d.hatena.ne.jp/kab_studio/20060919
起きた……。
[アニメ]N・H・Kにようこそ！ 第11話「陰謀にようこそ！」
[きらら]まんがタイムきららMAX 2006年11月号

2006/09/20 (Wed)
http://d.hatena.ne.jp/kab_studio/20060920
起きたー。
[買][水泳ダイエット]フットサルシューズとか購入
[アニメ]桜蘭高校ホスト部 第25話「ホスト部解散宣言」
[Prog]カレンダー作ってます。

2006/09/21 (Thu)
http://d.hatena.ne.jp/kab_studio/20060921
起きましたよ……。
[Prog]カレンダー兼スケジューラーほぼ完成
[水泳ダイエット]鶴見スポーツセンター(2)
[アニメ]イノセント・ヴィーナス 第7話「策謀」
[アニメ]ゼーガペイン 第25話「舞浜の空は青いか」

2006/09/22 (Fri)
http://d.hatena.ne.jp/kab_studio/20060922
起きた。
……いつも通りじゃない……
[アニメ]ザ・サード 〜蒼い瞳の少女〜 第19話「強行突破」
[アニメ]無敵看板娘 第23話「君が壊れた時」
[アニメ]無敵看板娘 第24話「葬られた宴」(終)

2006/09/23 (Sat)
http://d.hatena.ne.jp/kab_studio/20060923
起きた
[アニメ]彩雲国物語 第21話「君子危うきに近寄らず」
[アニメ]おとぎ銃士 赤ずきん 第13話「サラマンドラの村」
[アニメ]ふしぎ星の☆ふたご姫 Gyu! 
　第26話「おめでとう！☆天使のハーフバースデイ」
[アニメ]ウィッチブレイド 第24話「光」


////////////////////////////////////////////////////////////////////
// Ajaxでエロゲーを作るブログ
http://d.hatena.ne.jp/AjaxEroge/

（今週はお休みです）


////////////////////////////////////////////////////////////////////
// 風雅、舞い
http://www.kab-studio.biz/Novel/Fuga/index.html

■　第十五章　濁る澱み、清らかな血溜り　−３−

「大丈夫。完全に回復したわね」
　数値を聞いたあとの智子の表情は、安心感というよりは誇らしげな満足感
に充ちていた。
　舞はトラックの荷台へと目を向ける。そこにはカプセルが横たわり、その
中で少年が寝かされているはずだった。
「喉が潰されていたように見えたんですけど」
「そういう傷ならむしろ直しやすいでしょうね。燃やされていたりすると焦
げた部分を取り除いたりとかしなきゃいけないから大変だけど」
「そういう特殊能力は持っていないように見えました」
　少年の母親との戦いを思い出す。腕力に関しては非常に高いものを持って
いたが、それ以外の特殊能力は使用していなかった。
「あのカプセルがあれば、どんな傷も治せるんですか？」
「ええ、ＡＰの回復システムは人間のものとは根本的に違うから。人間は細
胞の複製を作るから、細胞そのものが完全に失われるとどうしようもないけ
ど、ＡＰは身体情報を分散確保しているから失われた部位の組織も再生でき
るの」
「でも、脳はどうなんです？」
「再生できることは実験済み。原理ははわからないけど、意識や記憶も含め
て完全に再生できるわ」
「実験……ですか」
「ちゃんと了解取ってからしたんだからね」
　……なんだけど、それを言い出す左さんも左さんなら、受け入れるリシュ
ネもリシュネよね……。
「その再生能力って、雅樹のものに近いんでしょうか」
「私の見解では、朴さんの方が上ね」
　密林での戦闘。雅樹は体の形を完全に失っていても、その状態から復活し
た。
「ＡＰの再生は、再生そのものは通常の細胞分裂に頼ってる部分が大きいん
だけど、朴さんのはそれとは違うみたい」
「雅樹で実験してみます？」
「研究者としては興味があるけど……でもそんなことしたら殺されても文句
は言えないわね」
　智子は鼻で笑うが、なんとなく未練を感じさせる声音だった。
                                                              (続く)

////////////////////////////////////////////////////////////////////
// JavaA2Z
http://www.kab-studio.biz/Programing/JavaA2Z/index.html

■追加・更新単語

（今週の追加はありません）


////////////////////////////////////////////////////////////////////
◎ ≪---= 業務用小型ダーツマシン「ダーツイーグル」

こんなに小さくても立派な業務マシン！
ダーツマシン設置でちょっとしたお小遣い稼ぎ。

できるだけ省スペースで、安価に置けるダーツマシンが↓ここ↓にあります。
『大阪ギフトショー新製品コンテスト大賞受賞！』
http://af1.mag2.com/m/af/0000008658/001/s00000001980002/006
////////////////////////////////////////////////////////////////////
// #pragma twice
http://www.kab-studio.biz/Programing/PragmaTwice/index.html

　Version 17.20
戻り値の型をインターフェイスにする

「前回はインターフェイスの具体的な説明をしました」
『つまり、外の関数を呼び出すための接続点になる、そういうクラスが
インターフェイスってことね』
「そういうこと。で、これをもう少し応用してみます」
『応用？』
「そう、インターフェイスを引数ではなく戻り値で使用します」
『……戻り値？　戻り値の型がインターフェイス、ってこと？』
「そういうこと。まず実際の例で見てみようか」

// Main.cpp
#include <Windows.h>
#include <stdio.h>

// 「出力」を行うクラスのインターフェイス。
class CPrinter
{
public:
    // 出力関数。純粋仮想関数です。
    virtual void Output( const char *p_pch ) = 0;
};

// 「デバッグ出力」を行うクラス。
class CDebugPrinter : public CPrinter
{
public:
    // 出力関数。オーバーライドしています。
    void Output( const char *p_pch )
    {
        // デバッグ出力します。
        OutputDebugString( p_pch );
    }
};


// 「ダイアログ出力」を行うクラス。
class CDlgPrinter : public CPrinter
{
public:
    // 出力関数。オーバーライドしています。
    void Output( const char *p_pch )
    {
        // 標準出力に出力します。
        MessageBox( NULL, p_pch, "デバッグ", MB_OK );
    }
};

// フラグ用定数値。
const int DEBUG_PRINTER = 0;
const int DLG_PRINTER = 1;

// 「出力」クラスを返す関数。
// 引数が DEBUG_PRINTER なら CDebugPrinter クラスのポインタを、
// DLG_PRINTER なら CDlgPrinter クラスのポインタを返します。
CPrinter *GetPrinterInstance( int p_iFlag )
{
    // 両クラスの変数を static 変数として作っておきます。
    static CDebugPrinter cDebugPrinter;
    static CDlgPrinter cDlgPrinter;

    // フラグによって出力を変更します。
    if( p_iFlag == DEBUG_PRINTER )
    {
        return &cDebugPrinter;
    }
    // else
    return &cDlgPrinter;
}

int WINAPI WinMain
    ( HINSTANCE p_hInstance
    , HINSTANCE p_hPrevInstance
    , LPSTR p_pchCmdLine
    , int p_iCmdShow
    )
{
    // 出力用に、 CPrinter クラスのポインタを受け取ります。
    CPrinter *pcPrinter;

    // まずデバッグ用を受け取ります。
    pcPrinter = GetPrinterInstance( DEBUG_PRINTER );
    // 出力します。
    pcPrinter->Output( "あいうえお\n" );

    // 次にダイアログ用を受け取ります。
    pcPrinter = GetPrinterInstance( DLG_PRINTER );
    // 出力します。
    pcPrinter->Output( "あいうえお\n" );

    return 0;
}

「まず、 CPrinter クラスがインターフェイスで、その派生クラスとして
CDebugPrinter クラスと CDlgPrinter クラスがあります」
『図にするとこんな感じ？』

                ┌───────────┐
                │CPrinter クラス       │
                │・Output()            │
                │　（純粋仮想関数）    │
                └───────────┘
                            △
                            │
            ┌───────┴───────┐
            │                              │
┌─────┴─────┐    ┌──────┴────┐
│CDebugPrinter クラス  │    │CDlgPrinter クラス    │
│・Output()            │    │・Output()            │
│　（オーバーライド）  │    │　（オーバーライド）  │
└───────────┘    └───────────┘

「そうそう、そうなります。 CPrinter クラスに Output() メンバ関数とい
う純粋仮想関数があって、それを各派生クラスでオーバーライドしていま
す」
『 CDebugPrinter クラスでは OutputDebugString() 関数で出力して、 
CDlgPrinter クラスでは MessageBox() 関数で出力してるわけね。……
ダイアログで出力することなんてある？』
「デバッグモードじゃなくリリースモードの時とか」
『そか、リリースモードでデバッグ……って変だけど、そういうときに使う
わけね』
「そういうこと。で、このクラスの変数を作ってポインタを返すのが、 
GetPrinterInstance() 関数。ここは抜き出して説明します。まずこの関数
の引数に渡すふたつのフラグを用意します」

// フラグ用定数値。
const int DEBUG_PRINTER = 0;
const int DLG_PRINTER = 1;

// 「出力」クラスを返す関数。
// 引数が DEBUG_PRINTER なら CDebugPrinter クラスのポインタを、
// DLG_PRINTER なら CDlgPrinter クラスのポインタを返します。
CPrinter *GetPrinterInstance( int p_iFlag )
                                   ↑
           この引数に DEBUG_PRINTER か DLG_PRINTER を渡します。

「この関数は、戻り値が CPrinter クラスのポインタになっています」
『インターフェイスのポインタ、っていうことはここがポリモーフィズムす
るってことなんだ』
「そういうこと。この戻り値で返すのは、以下の static 変数のどちらかの
アドレスになります」

    // 両クラスの変数を static 変数として作っておきます。
    static CDebugPrinter cDebugPrinter;
    static CDlgPrinter cDlgPrinter;

『 Version 6.02 ( No.102 ) でやったのだね』
「そう。 static メンバ変数とか static メンバ関数とは全然別だから注意
してね」
『はーい。確か、関数がなくなっても残る変数なんだよね』
「そう、普通の変数は関数から抜けるとなくなるんだけど、 static 変数は
最初に関数が呼ばれたときに作られたら、そのままずっと残ります」
『それって、そのあとでポインタを返しているから？』

    // フラグによって出力を変更します。
    if( p_iFlag == DEBUG_PRINTER )
    {
        return &cDebugPrinter;
    }
    // else
    return &cDlgPrinter;

「そう。ここで、引数によってどちらかのポインタを返しているんだけど」
『普通の変数だとなくなっちゃうから、ポインタが使えなくなっちゃうもん
ね』
「 Version 4.13 ( No.063 ) で説明したとおり、アドレスが指す先の変数
がなくなっちゃうとポインタとして意味がないから、 static 変数にして
なくならないようにしているわけです」
『なんか変な気もするけど……』
「それは次回説明するから。で、このように、引数に渡す値によって、返さ
れる変数が変わります」
『 DEBUG_PRINTER を渡すと CDebugPrinter クラスの変数のアドレスが返さ
れて、 DLG_PRINTER を渡すと CDlgPrinter クラスの変数のアドレスが返さ
れるわけね』
「このどちらのクラスも CPrinter クラスの派生クラスだから」
『アドレスを返すとポリモーフィズムするわけね』
「そのアドレスを受け取っているのと使っているのが以下のところ」

    // 出力用に、 CPrinter クラスのポインタを受け取ります。
    CPrinter *pcPrinter;

    // まずデバッグ用を受け取ります。
    pcPrinter = GetPrinterInstance( DEBUG_PRINTER );
    // 出力します。
    pcPrinter->Output( "あいうえお\n" );

    // 次にダイアログ用を受け取ります。
    pcPrinter = GetPrinterInstance( DLG_PRINTER );
    // 出力します。
    pcPrinter->Output( "あいうえお\n" );

『つまり、 pcPrinter には cDebugPrinter 変数のアドレスが入ってるとき
もあれば、 cDlgPrinter 変数のアドレスが入ってるときもある、ってわけ
ね』

 ┌ GetPrinterInstance() ──────────────────┐
 │ cDebugPrinter                              cDlgPrinter   │
 │       ↓ DEBUG_PRINTER だと     DLG_PRINTERだと↓        │
 │       ↓ こちらを返す              こちらを返す↓        │
 │       →→→→→→→→→→→↓←←←←←←←←←         │
 └────────────── ↓ ─────────────┘
                                ↓
                            pcPrinter

『こーすると pcPrinter がポリモーフィズムするわけね』
「というわけで次回に続く！」

/*
    Preview Next Story!
*/
『インターフェイスを戻り値にすることもできるんだねー』
「この方法が分かるとかなり応用範囲が広がるよ」
『でも static 変数使うのって変じゃない？』
「そう、本当は new を使うんだけどね」
『あ、そういえば！』
「というわけで次回」
＜ Version 17.21 new / delete とポリモーフィズム ＞
『につづく！』
「しかしそれがポリモーフィズムの発展を阻害するのです！」
『な、なんですか熱くなって』


////////////////////////////////////////////////////////////////////
/*                          ご注意！！                            */

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.biz/nikki2/index.html
・購読登録を解除したいときにはこのページで行なってください。
http://www.mag2.com/m/0000012198.htm
・解除は自分で行なってください。
・バックナンバーはこれらのページにあります。
http://backno.mag2.com/reader/Back?id=0000012198
http://www.kab-studio.biz/Freeware/index.html#MailMagazine


////////////////////////////////////////////////////////////////////
/*
    KAB-studio.h
      Weekly Mail Magazine.
      Written by Kaburaya Seiden.
      http://www.kab-studio.biz/Info/MailMagazine/

    (C)KAB-studio 1999 - 2006 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz
*/
////////////////////////////////////////////////////////////////////

