Shouldn't an Edge be a Node between two Nodes?
Brainweaver, Edge::m_from and Edge::m_to should be Node