|
/*========================================================*/ <<<あゆしゃのC言語プログラミング>>> /*========================================================*/ 第557回 ヒステリシス5 名前空間 発行 2005年4月27日(水曜日) 発行数 約2600 {magclick} /*========================================================*/ はじめに ( 決り文句 ) /*========================================================*/ ・このメールマガジンは、主にまぐまぐさんから発行しています。 ・ジャンルは、マルチメディアのプログラム、C言語です。 ・横60文字で作成し、インデントは大抵半角スペース4つです。 ・ここで扱うプログラムは、C言語と半光年以内のものです。 ・登録解除は、メルマガのホームページでお願いします。 ・過去ログはバックナンバー(下欄参照)を活用して下さい。 ・内容は私が感じたもので、最新の技術も、へたれもあります。 ・わかりやすさを優先させる為、たまに嘘があるかもしれません。 ・セキュリティ突破のため、暗号化された単語があります。 /*========================================================*/ ご挨拶 /*========================================================*/ こんにちは。あゆしゃです。 というわけで、プリウスを購入した あゆしゃは、豊田の街を 走り回っています。 残念なことに、一緒にドライブを楽しむ方がいらっしゃらない ので、いたしかたなく人形(母君)を乗せて、走っています。 気になる燃費ですが、15程度といったところでしょうか。 ミッションの軽自動車のほうが、燃費がいい気がします。 私のアクセル加減が下手なせいでもあるでしょうが。 {magclick} /*========================================================*/ 今回のお題 << ヒステリシス5 名前空間 >> /*========================================================*/ ヒステリシスについて、いろいろと関数を紹介してきました。 それらの関数は int で作りましたが、int 以外にも使いたい かもしれません。 そこで、テンプレートを使ってみました。 そこまでできたとき、ふと、疑問が起こりました。 関数名称が、グローバル関数としては簡単すぎるのです。 そこで、名前空間を使ってみようと思いつきました。 前回の関数を名前空間でまとめると、こんな感じです。 // His.cpp namespace Histeresis { template <class T> T hys2( const T old, const T d, const T x1dn, const T x2dn, const T x1up, const T x2up, const T y1, const T y2 ) { T dn = con2( d, x1dn, x2dn, y1, y2 ); T up = con2( d, x1up, x2up, y1, y2 ); return mid( old, dn, up ); } } 関数を使うときには、 x2 = Hysteresis::hys2( x2, x, 100, 200, 300, 400, 0, 500 ); とするか、もしくは事前に名前空間を解決して、 // user,cpp using namespace Histeresis; x2 = hys2( x2, x, 100, 200, 300, 400, 0, 500 ); という感じで使います。 カタカナ英語で書くと「ひすてりしす」ですが、英語のスペルは 「ひすてれしす」です。ちょっと違うので注意が必要です。 こうしておけば、心置きなくグローバル関数をポコポコと書くこ とができて、幸せです。 /*========================================================*/ 今後の予定として、この回では「クラスにまとめる」と紹介 されていましたが、いろいろ考えた結果、クラスは駄目だという 結論になりました。 クラスの静的関数にすると、 x2 = CHys<int>::hys2( x2, x, 100, 200, 300, 400, 0, 500 ); という感じになります。 <int>というのは、テンプレート引き数といって、テンプレート に明示的に型を指定するものです。 グローバル関数では、引き数によって型が指定されるため、 これを省略できたのですが、クラスの静的関数とすると、 template <class T> class CHys { T hys2( ... ); } という感じになり、クラス名称自体にテンプレートが指定され ます。 そうすることで、クラスの内部で一貫した型情報を扱えることに なり、各関数でテンプレートの記述をしなくてすむので楽ですが、 ★使うときに不便です。 これは諦めました。 /*========================================================*/ 少し簡単でしょうか、FEに忙しいのは内緒です。 現在、大橋を突破するところ。クリア目前です、多分。 {magclick} /*========================================================*/ さいごに /*========================================================*/ 今後の予定表です。 済 CImageサンプルの説明(していなかった?) 済 ヒステリシス1 ヒステリシスとは座標変換 済 ヒステリシス2 ヒステリシスとは状態遷移 済 ヒステリシス3 ヒステリシスとはファジィ 済 ヒステリシス4 テンプレートで作成しよう 済 ヒステリシス5 名前空間にまとめよう 第558回 テンプレート木構造1 TreeMasterをテンプレートに 第559回 テンプレート木構造2 クラス設計 第560回 テンプレート木構造3 追加、検索 第561回 テンプレート木構造4 ソート、left検索 第562回 テンプレート木構造5 マクロ定義 第563回 ガベージコレクタ1 テンプレートの隠蔽 第564回 ガベージコレクタ2 ユーザ設計 第565回 ガベージコレクタ3 クラス設計 第566回 ガベージコレクタ4 登録、削除処理 第567回 ガベージコレクタ5 Attach、Detachの処理 第568回 キャラエディッタ1 ソフトの説明 あくまでも予定です。 {magclick} /*========================================================*/ 次回予告 /*========================================================*/ 次回は5月9日(月曜日)に、第558回をお送りします。 お題は「テンプレート木構造1 概要」 ゲームプログラムに欠かせないアルゴリズムの代表格である (らしい)、ヒステリシスアルゴリズムについて特集します。 4月29日から5月6日までゴールデンウィーク休みとします。 第558回は5月9日月曜日となります。 お楽しみに! /*========================================================*/ 最後の決り文句 /*========================================================*/ このメールマガジンは、まぐまぐさんから発行しています。 このメールマガジンを解除したい場合は、まぐまぐさんをご利用 ください。このメルマガのまぐまぐアイディーは最後にあります。 このメールマガジンには広告が挿入されていますか? このメールマガジンの内容に文面の引用はありませんか? めーらっくすの場合はめーらっくすの利用方に従ってください。 このメールマガジンの内容の、転用、流用、宣伝、リンク、 9連休、FEに投じます なんて大歓迎です。 {magclick} /*========================================================*/ /*========================================================*/ 発行者 あゆしゃ ホームページ::あゆしゃの世界 http://ayusya.hp.infoseek.co.jp/ ご意見・ご感想・ご質問メール mailto:ayusya@flamenco.plala.or.jp まぐまぐ::アイディー 0000020674 まぐまぐ::登録と解除 http://www.mag2.com/m/0000020674.htm まぐまぐ::バックナンバー http://jazz.tegami.com/backnumber/frame.cgi?id=0000020674 めーらっくす::アイディー MM3E1AEE285AB4F めーらっくす::登録と解除 http://www.mailux.com/mm_dsp.php?mm_id=MM3E1AEE285AB4F めーらっくす::バックナンバー★最近のものならこちらが便利★ http://www.mailux.com/mm_bno_list.php?mm_id=MM3E1AEE285AB4F |