2006-06-22-01-驚愕の事実 - project-enigma

2006-06-22-01-驚愕の事実

>> Site top >> weblog >> 月別アーカイブ >> 2006年06月のlog >> 2006-06-22-01-驚愕の事実

最終更新日付:2013/12/31 07:39:18


驚愕の事実

2006 年 06 月 22 日

...ものすごくショックなことがあって落ち込んでいる陰郎です。何かというと、DAではポリモーフィックなクラスが使えないということが分かってしまったからです。どういうことか、以下に説明します。

Palm OS では、アプリケーションが sysAppLaunchCmdNormalLaunch 以外で起動された場合、大域データを使用することができません。それは以前から知っていました。陰郎が失念していたのは、C++ の実装自体が大域を使用するということです。つまり、ポリモーフィックなクラスや RTTI 、例外処理などは全て内部的には大域を使用しているわけです。そもそも RTTI や例外処理は Palmware の開発では使わないようにしていましたが、それは性能的な理由からで、陰郎にとっては多態性は必要不可欠なのです。しかし、仮想関数を呼び出した瞬間にオチてしまうため、どうにもなりません。リンカエラーすらでなかったので気付くのが遅れましたが、それは大域データが設定されるかどうかが実行時に依存するからのようです。ちなみに、CodeWarrior のマニュアルでこの部分に言及しているところを読むと、C++ 標準ライブラリのほとんどの クラス・関数・テンプレートもまた大域を使用するとのコト。嗚呼。

方法は2つ。あきらめて DA は C で書くか、そうでなければ多態や標準C++ライブラリを使わないでなんとかする...もちろん後者です。あまりエレガントには作れないかもしれませんが、やってみるしかないでしょう。うん、頑張る。

 

コメント

このページにコメントする

 

このページのタグ

Page tag : Palm

 

 


Copyright(C) 2005-2017 project-enigma.
Generated by CL-PREFAB.