■28726 / ) |
Re[2]: C++の内部クラスの静的メンバの初期化 |
□投稿者/ hijiki (2回)-(2008/11/29(Sat) 18:39:39)
|
お返事ありがとうございます。
なんでTREEだかNODEが一度だけしか作れなくなってしまうのでしょうか? インスタンスによらず共通のNONEにアクセスするようになるだけではないですか? 勉強不足ですみません。
また、この問題が起きたのは赤黒木を作っているときなのでNULLとNONEを明示的に分けたほうが便利です。また、NODEに0はムリです。
ちなみにクラス内で初期化できる静的メンバは整数型だけですのでdogatanaさんのメンバは初期化で着ますがそれ以外、例えば上のNODE型は初期化できません。
普通静的なメンバクラスはクラス外で初期化しますので、
const Tree<>::NODE::NODE *( Tree<>::NODE::NODE::NONE ) = new Tree<>::NODE(0);
という感じでクラス外で初期化すればTree<int>型でNONEが使えるようになるかと思ったのですが、templateデ指定するKEY型を外から堂指定するのか分からなかったのですが、取り合えずNONEにKEY型の値を与える必要はないので、諦めてNODE(){}という何もしないコンストラクタを追加して
const Tree<>::NODE::NODE *( Tree<>::NODE::NODE::NONE ) = new Tree<>::NODE::NODE();
というようにするようにしました。
|
|