class List { public: ... // same as before void Add(void * v) { firstElement = new Link(v, firstElement); } void * First() { return firstElement->value; } ... // same as before }; class Link { // constructors Link (void * v) : next(0), value(v) {} Link (void * v, Link * n) : next(n), value(v) {} // data areas Link * next; void * value; };