2007年8月29日水曜日

別に仮想クラスにする必要ないっぽいね

今日もプログラムネタ。とりあえずこのネタだとなんとか繋いでいけるんだよね^^;
昨日のポストで
「スーパークラスは仮想クラスにしなきゃだめ?」
みたいなことを書いたんですが、よくよく考えたら別にその必要もなさそうですね。
というのも、多重継承するなら仮想クラスにする必要も出てきますが、多重継承しないなら仮想クラスにしなくてもいいじゃないかと。今スーパークラスを持っていないクラスが自前のスーパークラスを継承するようにさえしてやればいいわけで。
というか、仮想関数と仮想クラスは分かりにくいよなぁ。C++でもinterfaceクラス的な実装は出来るけど、それしようと思ったら参照渡しにしておかないといけない。いっそのこと全部参照渡しにしてしまいたいと思うけど、ポインタでないといけない場面もあったりして困りものだ。アドレス渡しと参照渡しと値渡しが混在するのはほんと勘弁願いたいよ。クラスオブジェクトに関しては値渡しはすべきじゃないな、私の実装の仕方だと。クラスのメンバに配列を持つことが多いからなぁ。コピーコンストラクタをわざわざ定義なんかしてないし、デストラクタで確保した領域を確保しちゃってるから値渡しにするとえらいことに。
解決策としては、コピーコンストラクタをきちんと実装するか、値渡しを禁止するかいずれか。そりゃ値渡しを禁止した法が楽ってもんだ。
ビバ!マイルール。
VC#だと、コメント記法がちゃんと決まってて、それに沿ってコメントを書いておくとポップアップが表示されて便利。VC++でもポップアップは出るんだけど、特にコメント記法までは決まっていない。
が、Doxygenというツールを使えば、コメント記法に乗っ取って書くことで綺麗なAPI仕様書を簡単に作ることが出来る。でまぁそのコメント記法はそんなめんどうなもんじゃないのでちまちまと書いてAPI仕様書を作ったのですが、形になってくれるとなんか嬉しいですねぇ。大したクラスを実装したわけでもないのに大層な仕様書ができあがるので、すっごい自己満足に浸れます(笑)
さらに、このDoxygen、C++以外にも多くの言語に対応しておりまして、C#にも対応していると。C#のコメントからAPI仕様書を生成するツールはM$も出しているのですが、なんとコマンドラインからの実行。しかも超分かりにくい。ぶっちゃけ使えない。
それに対し、Doxygenは非常に優秀でした。ついでに言うと、M$が生成するHTMLよりはるかに軽かったです。まぁ、M$の生成するHTMLはJavaScriptを駆使してMSDNライクなページを生成してくれるので、それはそれで重宝するんですけれどね。
DoxygenはHTMLだけじゃなくLaTeX形式(他にもありますが省略)なんかでも吐いてくれるのですが、UTF-8形式でした。UTF-8に対応したLaTeXってありましたっけ・・・?あったら使ってみたいところ。LaTeXでもってPDFを生成したら紙の仕様書のできあがり。素晴らしい自己満足だ(笑)
さ、自己満足に浸ってないで、さっさと残りの仕事を片付けようOrz

0 件のコメント:

コメントを投稿