Whiteのふりーとーく

仕事:ポポポインタに悩む

About this Page |過去分一覧

近頃版/another blog@hatena/Wiki/BBS

< 抽象化とインフレーションのこと | 仕事:ポポポインタに悩んでいる。 >

 

仕事:ポポポインタに悩む

BREWへのフレームワークの移植作業をしていたら、ポインタのポインタのポインタが必要そうな場面に遭遇。

元がJavaでVectorにObjectの配列を突っ込むという実装なうえ、どうせObjectを突っ込んでいるのだからとばかりに実に野放図な使い方をしまくった(Objectを入れるところにはObject[]も入れられる!)ので同等の機能を確保するのにはそれなりに手をかけてやる必要がある。

JavaのときにはObject型という便利な概念があったというだけで、そういう便利な概念がないC++ならObject型から始まる継承ツリーに相当するものを自前でコーディングすればいいだけだ……と書くだけでひどくがっかりしてくるのは何故だ。

_この問題を更にがっかりな感じにさせる事実に、これが特定のUIウィジェットの実装の問題として出てきているという点がある。

具体的に作っているのはHTMLのテーブルみたいなのを実現するためのウィジェットなのだが、ウィジェットとしてLabel(文字を表示する)とかが既にあるのに、テーブル内部用にLabelに酷似した「テーブル内文字列」とか「テーブル内整数」みたいなクラスを作ることになる。その、ウィジェット内ウィジェット、あるいはアプリ内アプリ、みたいな対称性の崩れた入れ子構造を作りこむ羽目になるのがなんともダサい。しかしそのダサさを解消しようとすると複雑すぎてわけわからん実装になる。自分の趣味ならともかく他人にも使わせるフレームワークでそれはありえない。

_ということでポインタのポインタのポインタという話に戻る。できれば扱わせたくないこのデータ構造を、どうやって上手く包んでやるか、というあたりが目先で最大の仕事になる……はず。しかもこのTableを継承することになるクラスも多い予定なので、それが更に問題をややこしくする。今回の仕事の最大のポイントだろうなあ、これ。

TrackBack ping url:

名前

TrackBack:


御意見・御感想の宛先white@niu.ne.jp