[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: [jfriends] Re: ポインタと参照




前橋です。

遠藤さん:
>>・関数がひとつしかなくて、
>>・ひとつめの引数が「機能コード」(型はint)
>>・ふたつめの引数が、void*、または、全部一緒の詰め込み構造体
>>  (当然、機能コードによって、どのメンバが有効かが決まる)
>>こんなのとか(^^;
>>いや、世の中には、こういうのを好きな人がいるんですよ...
>
>関数ポインターの配列ならよく使うけど...

いわゆるコールバック関数で、引数をvoid*にせざるを得ないこと
はありますね。

でも、ライブラリの公開関数でこれは酷いと思うです。

>>本当は、「intの配列(要素数5)のポインタを引数として、intの配
>>列(要素数5)のポインタを返す関数のポインタ」を引数として渡し
>>たかったんだけど、宣言の仕方がわからずに、void*にしちゃった。
>>とかいう場合もありますが。これは同情の余地があるような(^^;
>
>「無知は罪」とか言ってみたりして^^;

言いたいのは山々ですが、ちょっと酷でしょう。宣言の構文がぶち
壊れている Cが悪いと思いますです。

>generic は良く分からないので enum ですけど、百も種類がある enum は
>考えにくいので、public static final int とかで書けるような気がするのですが。
>型チェックはできないけど。

型チェックが欲しいのもありますが、それよりソースの可読性の問題です。

>あと、class があるのに typedef が欲しい理由は何でしょう。
>ものによっては interface を書いても事足りるような気がします。

Javaの場合、オブジェクトは常にポインタなので、= でコピーした
ときにちょっとびっくりな結果を起こしかねない、というのが気に
なります。

もっとも、typedefで隠蔽された型が、実体なのかポインタなのか
を常に意識しながら使うのも危険なので、(効率を考えなければ)
コンストラクタ以外では値を設定できないようにしたオブジェクト
を使うのも手かなあ、とも思いますね。その方が拡張性あるし。

------------------------------------------------------------
  前橋 和弥                             maebashi@xxxxxxxxxx
  中部ソフトエンジニアリング(株)
    〒450 名古屋市中村区名駅4-10-25(名駅IMAIビル 5F)
    Tel:(052)583-4511(代) 内線 252 Fax:(052)583-4566
------------------------------------------------------------