検索条件
全1件
(1/1ページ)
だいぶ前に書いたC++で木構造どうしようの記事
template <class T> class TreeNode { ... }; の中身は?
template<T> struct TreeNode { TreeNode<T> *parent, *child_left, *child_right; }
とかつくったら、
TreeNode<OBJECT_T *> pObject; の子供のメンバにアクセスするたびに
static_cast<OBJECT_T *>(pObject->child_left)->SomeMember;
みたいに static_cast すんのか?
という疑問に対する一つの答えが
template<T> struct intrusive_tree_base<T> { T *parent, *child_left, *child_right; } struct SomeTreeNode : public intrusive_tree_base<SomeTreeNode> { SomeType SomeMember; };
すればいいじゃないということに気づいた。
というわけで、実際に実装してみた。
intrusive_tree_base
https://gist.github.com/ttsuki/5b0498518f99f1fd2b78
C++11を学ぶにつれて、だんだんこういうかゆいところにも手が届くように、なってきたりする。