ども。REKIです。
数珠つなぎ2見ました。gakuさんもshi3zさんも短時間で大したもんです。
でも、まだ少しだけ意見差し挟む余地があるような気がしたので徹夜仕事の
合間に考えてみました。こんなのどうかと思います。
基本的路線はshi3zさんと同じです。
template< class T > class TList {
private:
T &body;
TList *next, *back;
public:
TList( T &b; ) : body(b) { //bodyをbで初期化。
next=NULL, back=NULL;
}
AddNext( TList &n; ) {
next = &n;
n.back = this;
}
};
class Body {
TList list;
public:
Body( ):list( *this ){ //こういう真似ってできるんでしょうか。エラーは出ないけど。
}
};
とまあそんなわけです。
メンバーにある参照ってポインタでシミュレートされちゃうんでしょうかね。もしそう
だとしたら、速度面ではあまり意味が無くなってしまいますが、それでも最低限
バグの抑制にはなると思います。
リスト内の本体はnullを許したくないので、参照にすると良いかも知れないと
考えました。
一応コンパイルして若干のチェックはしましたが徹夜明けの頭で考えたので、
なんか間違っている可能性はあるんですけど(笑)。
|