The following assignment operator is defined for both the generic and user-derived Edge types:
Edge& operator=(const Edge& e);
so that, for Edges e and e2 the following operation is legal:
e = e2;
Since an Edge is manipulated through its pointer, built-in pointer comparison is available to conduct tests such as:
if (e == e2) ... ;
Note that this compares Edge pointers, not Edge contents.