I am quite new to C++, so I\'m open to suggestions to improve my program architecture if I\'m going about this the wrong way. This is a reasonably long question, so thanks f