I you want to maintain pick/clone distinction, you should implement "clone" constructor/operator:
Line(const Line& ln, int):p1(ln.p1),p2(ln.p2), elp1(???),elp2(???),
segs(clone(ln.segs)), // make a deep copy
lines(clone(ln.lines)) // ditto
{}
// and operator=....