ソースを貼るには躊躇する長さだったので、概略を貼ります。
C++を使うのは初めてなので間違っている記述があればご指摘ください。
いちばんひっかっかっているのが、set_node()においてnew Nodeとして
領域を確保しているのに、HyperNodeをポインタをそこへ渡していることです。

class List {public:
Node *node_ptr;
void set_node(Node *nd) {(node_ptr=new Node)=nd;}};
class HyperNode : public Node {public: List *sublist;};

HyperNode *hnd_ptr; hnd_ptr=new HyperNode;
List::set_node(hnd_ptr);