////////////////////////////////////////////////////////////////////
◆“成約率”が20倍になると、年収は100倍以上に！？その秘密を一挙公開

実績ゼロ、人脈ゼロ、経験ゼロの若造２人が【２億円】を手にした成功法、
それは、成約率を２０倍に引き上げる強烈な『言葉の魔術』にあった！
　　　  ~~~~~~~~~~~~~~
自ら業界地図を塗り替え続け、さらには300人以上のネット起業家を
１０〜２０倍の業績アップに導いた、『最強のセールスレター』とは！？
詳細を知りたい方は、下記アドレスをクリック！
http://af1.mag2.com/m/af/0000008658/001/s00000004364001/003
////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


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

    送信日： 2006/12/11(Mon) No.386
    配信数： 1676
    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

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

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

2006/12/11 (Mon)
　#pragma twice ホームページ版にアーカイブ追加！
17.20 戻り値の型をインターフェイスにする
17.21 new / delete とポリモーフィズム
[ #pragma twice ]
http://www.kab-studio.biz/Programing/PragmaTwice/index.html


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

2006/12/03 (Sun)
　ゼルダ三昧。そのせいか腕や背中が痛い。楽しければ死にそうになっても
続ける、それがゲーム。

2006/12/04 (Mon)
　私用でおでかけ。そしてWii買っちゃいました。

2006/12/05 (Tue)
　ゼルダやウィスポで起きる時間がずれていく。ゼルダしてプール行って
以上。

2006/12/06 (Wed)
　ゼルダで徹夜。「あれができるんじゃないか」がいっぱい。さすがに中盤
超えた？

2006/12/07 (Thu)
　朝６時までゼルダ。１２時半起き。プール忘れ物で行かず。あとは大掃除
を。本棚追加する予定。

2006/12/08 (Fri)
　漫画読んで７時寝。片づけ開始。体力的に限界。今日中には終わらせる。
部屋全体はまだまだだけど。来週のおしごとがぽしゃる……。

2006/12/09 (Sat)
　片づけが終わったのが深夜３時半。ウィスポやって朝６時に寝て昼１時に
起きる。ほとはー外伝３描きがメイン。今週はゼルダに時間取られすぎ。


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

2006/12/03 (Sun)
http://d.hatena.ne.jp/kab_studio/20061203
起きた……
[ゼルダトワプリ]できることとできないことがわからん……。
[KAB-studio]ぷらとわ追加。
[KAB-studio][ほとはー]ほとはー外伝３ P.82
[アニメ]「牙」 第36話「よみがえる翼」
[アニメ]おねがいマイメロディ〜くるくるシャッフル！〜 
　第36話「家族になれたらイイナ！」
[アニメ]乙女はお姉さまに恋してる 第9話「まりやの気持ち」
[アニメ]くじびきアンバランス 第9話「はなびがきれいにみえた。5点」
[アニメ]Gift 〜eternal rainbow〜 第9話「つながる心、途切れた想い」

2006/12/04 (Mon)
http://d.hatena.ne.jp/kab_studio/20061204
起きた。
帰ってきた。
[アニメ]金色のコルダ 第10話「孤高のヴィルトゥオーソ」
[アニメ]夜明け前より瑠璃色な Crescent Love 第9話「お姫様に迫る影」
[アニメ]ギャラクシーエンジェる〜ん 
　第10話「強襲！戦場のプロフェッショナる〜ん」

2006/12/05 (Tue)
http://d.hatena.ne.jp/kab_studio/20061205
起きた。
[水泳ダイエット]12月2回目
[ゼルダトワプリ]もうすぐ3番目の神殿。
[アニメ]BLACK BLOOD BROTHERS 第10話「オーダー・コフィン・カンパニー」
[アニメ]N・H・Kにようこそ！ 第22話「神様にようこそ！」
[アニメ]Pumpkin Scissors 第10話「カボチャとハサミ」

2006/12/06 (Wed)
http://d.hatena.ne.jp/kab_studio/20061206
やべぇ。
お、起き……。
[ゼルダトワプリ]30時間突破。
プール休んだ。
[アニメ]DEATH NOTE 第10話「疑惑」
[アニメ]ブラックラグーン 第22話「The Dark Tower」
[アニメ]ネギま！？ 
　第10話「私に隠れてネギ先生と？そんな事絶対に認めませんわ！」

2006/12/07 (Thu)
http://d.hatena.ne.jp/kab_studio/20061207
起きた。
[ゼルダトワプリ]砂漠クリア。
[アニメ]奏光のストレイン 第7話「ラヴィニアの素敵な陰謀」
[アニメ]武装錬金 第10話「君と俺は相性がいい」

2006/12/08 (Fri)
http://d.hatena.ne.jp/kab_studio/20061208
起きた……。
神聖モテモテ王国
おかたづけちゅう。
かたづけおわらない。
一応終わった。
[アニメ]あさっての方向。 第10話「本当の名前」
[アニメ]すもももももも〜地上最強のヨメ〜 第10話「早苗の許婚現る」

2006/12/09 (Sat)
http://d.hatena.ne.jp/kab_studio/20061209
起きた……。
[買]コミックスとか。
[きらら]まんがタイムきらら 2007年1月号
[link]住基ネット「個人離脱」、１人削除に最大３５００万
[アニメ]彩雲国物語 第29話「一日千秋の思い」
[アニメ]おとぎ銃士 赤ずきん 第24話「草太のおかあさん」
[アニメ]ふしぎ星の☆ふたご姫 Gyu! 
　第37話「どうするビビン!?☆ふたごのお茶会」
[アニメ]コードギアス 反逆のルルーシュ 第9話「リフレイン」


////////////////////////////////////////////////////////////////////
// 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

■追加・更新単語

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


////////////////////////////////////////////////////////////////////
◆“成約率”が20倍になると、年収は100倍以上に！？その秘密を一挙公開

実績ゼロ、人脈ゼロ、経験ゼロの若造２人が【２億円】を手にした成功法、
それは、成約率を２０倍に引き上げる強烈な『言葉の魔術』にあった！
　　　  ~~~~~~~~~~~~~~
自ら業界地図を塗り替え続け、さらには300人以上のネット起業家を
１０〜２０倍の業績アップに導いた、『最強のセールスレター』とは！？
詳細を知りたい方は、下記アドレスをクリック！
http://af1.mag2.com/m/af/0000008658/001/s00000004364001/003
////////////////////////////////////////////////////////////////////
// #pragma twice
http://www.kab-studio.biz/Programing/PragmaTwice/index.html

　Version 17.31
動的型チェック

「さて、今回が継承関係の最後の説明になります」
『おお！』
「今回は、動的に型を調べる方法について説明します」
『型を調べる？　だって変数見れば型なんて分かるじゃん』
「ポリモーフィズムの時も？」
『あ……そか、アップキャストしてたら本当の型がわかんないんだ！　それ
が分かる方法があるんだー』
「そういうこと。 Version 17.17 ( No.372 ) で説明したように、
ポリモーフィズムを使うと〈実際の型が分からない〉ということが多々あり
ます。そういう場合、時々不便なことになります」

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

// 基本クラス。
class CBase
{
public:
    virtual ~CBase(){}
};

// 派生クラス。
class CDerived : public CBase
{
public:
    int m_i;
};

void UseBase( CBase *p_pcBase )
{
    // ここで CDerived クラスの m_i メンバ変数を出力したい。
}

int WINAPI WinMain
    ( HINSTANCE p_hInstance
    , HINSTANCE p_hPrevInstance
    , LPSTR p_pchCmdLine
    , int p_iCmdShow
    )
{
    CDerived cDerived;
    cDerived.m_i = 100;
    UseBase( &cDerived );

    return 0;
}

「この例では、基本クラス CBase クラスと派生クラス CDerived クラスが
あって、派生クラスの方に m_i メンバ変数があります」
『で、 UseBase() 関数に CDerived クラスからアップキャストしてアドレス
を渡している、と』
「そうなんだけど、どうしてもこの UseBase() 関数内で、実際のクラスで
ある CDerived クラスの m_i メンバ変数を使用したい場合」

     この例では CDerived クラスの変数のアドレスが渡されています
                         ↓
void UseBase( CBase *p_pcBase )
{
    // ここで CDerived クラスの m_i メンバ変数を出力したい。
}

『確かに p_pcBase が指してる変数は CDerived クラスだから、使えなくは
ないよね。あ、 Version 17.08 ( No.363 ) のダウンキャスト使えばいいん
じゃない？』
「うん、それも方法のひとつ。たとえばこんな感じにすればできます」

void UseBase( CBase *p_pcBase )
{
    // ダウンキャストします。
    CDerived *pcDerived = (CDerived *)p_pcBase;
    // メンバ変数を取得します。
    int i = pcDerived->m_i;
    // 変換して出力します。
    char pch[256];
    sprintf( pch, "%d\n", i );
    OutputDebugString( pch );
    // 100
}

『あれ？　解決したじゃん』
「ところがそうはいかないんです。この例では p_pcBase 変数には必ず
CDerived クラスの変数のアドレスが渡されてくるけど……」
『……そうじゃない場合にどうするか、ってことね。たとえば CBase 変数
のアドレスが渡されてきたりとか？』

    CBase cBase;
    UseBase( &cBase );

『こうしちゃうと……』
「当然 m_i メンバ変数は存在しないので、出力結果は変になります」

     CBase クラスの変数のアドレスが渡されています
                         ↓
void UseBase( CBase *p_pcBase )
{
    // ダウンキャストします。
    CDerived *pcDerived = (CDerived *)p_pcBase;
    // メンバ変数を取得します。
    int i = pcDerived->m_i;           ←この m_i はないよ。
    // 変換して出力します。
    char pch[256];
    sprintf( pch, "%d\n", i );
    OutputDebugString( pch );
    // -858993460                    ←だから出力結果が変。
}

『うわーお』
「なので、決めつけてダウンキャストすることはできないんです」
『確かにそうだね……で、ここで動的型チェックなるものが出てくるわけね』
「そういうこと。まず、これから説明する機能は設定を変えないと使えない
ので、まずその設定を変更します」
『うぉ、なんだか本格的』
「まず【プロジェクトの設定】ダイアログを開いて、【C/C++】タブを
クリックして、【C++ 言語】カテゴリのページを開いてください」
『ん？　この辺の設定って前にやったよーな……』
「 Version 15.21 ( No.321 ) かな。でもこの【C++ 言語】のページはとば
しちゃったんだよね」
『げげ、そういえば』
「で、この中の【ランタイム タイプ情報（RTTI）を有効にする】のチェック
をオンにしてください」
『ほい』
「そうしたら、プログラムを以下のように修正します」

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

// 基本クラス。
class CBase
{
public:
    virtual ~CBase(){}
};

// 派生クラス。
class CDerived : public CBase
{
public:
    int m_i;
};

void UseBase( CBase *p_pcBase )
{
    // ダウンキャストします。
    CDerived *pcDerived = dynamic_cast<CDerived *>( p_pcBase );
    if( pcDerived == NULL )
    {
        OutputDebugString( "CDerived クラスではありません。\n" );
    }
    else
    {
        // メンバ変数を取得します。
        int i = pcDerived->m_i;
        // 変換して出力します。
        char pch[256];
        sprintf( pch, "%d\n", i );
        OutputDebugString( pch );
        // 100
    }
}

int WINAPI WinMain
    ( HINSTANCE p_hInstance
    , HINSTANCE p_hPrevInstance
    , LPSTR p_pchCmdLine
    , int p_iCmdShow
    )
{
    CDerived cDerived;
    cDerived.m_i = 100;
    UseBase( &cDerived );
    // 100

    CBase cBase;
    UseBase( &cBase );
    // CDerived クラスではありません。

    return 0;
}

「修正箇所は UseBase() 関数。この中で、ダウンキャストするときに
dynamic_cast というものを使用しています」

    // ダウンキャストします。
    CDerived *pcDerived = dynamic_cast<CDerived *>( p_pcBase );

『うぉ、なんか新しいのでてきた！』
「これは、ポインタのアップキャスト・ダウンキャスト用の演算子で、
キャストするときに〈本当にキャストできるか〉をチェックしてくれるんで
す」
『おお！』
「文法的には【dynamic_cast<キャスト先の型>( キャストする変数 )】とな
ります。だから普通のキャストと比較するとこうかな」

    CDerived *pcDerived = (CDerived *)p_pcBase;
                               ↓
                                →→→→→→
                                           ↓
    CDerived *pcDerived = dynamic_cast<CDerived *>( p_pcBase );

『なんだ、つまりこの【<>】の中に書けばいいだけなんだね』
「だから使い方は普通のキャストとほとんど同じ。ただこのキャストは、
キャストができない場合には NULL を返すんです。だから、それをチェック
すれば安全にダウンキャストできるんです」

    if( pcDerived == NULL )
    {
        OutputDebugString( "CDerived クラスではありません。\n" );
    }
    else
    {
        // (略。キャストできた場合)
    }

『なるほど、 NULL じゃない時だけ使えばいいわけね』
「そういうこと。これを使えば安全なダウンキャストができるわけです」

/*
    Preview Next Story!
*/
『次回はいよいよまとめ！』
「長かったねー」
『いやホントしゃれにならないって』
「それもあともう少し……」
『？』
「というわけで次回」
＜ Version 17.32 継承のまとめ ＞
『につづく！』
「まとめだけじゃなく、全体的な考え方の布石とかも」
『簡単には離れさせてくれないのね……』


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

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
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
*/
////////////////////////////////////////////////////////////////////

