@d_stranz: You've been very helpful. I'm pretty much there with my implementation following your advice. My custom QFile class has an empty std::vector<ptcore_t*> in its constructor. The ptcore_t abstract class has virtual get/set functions for every possible variable.

Qt Code:
  1. class ptcore_t
  2. {
  3. public:
  4. ptcore_t();
  5. virtual void clear();
  6.  
  7. /* Generalized data recording and retrieval functions */
  8. virtual double setXYZ(int i, double v);
  9. virtual quint16 setIntensity(quint16 v);
  10.  
  11. /* Placeholder functions for other formats */
  12. virtual double setTimeStamp(double v) { return 0.0; }
  13. //Lots and lots more placeholders that can be mixed and matched
  14.  
  15. private:
  16. /* Point data fields */
  17. double xyz[3];
  18. quint16 intensity;
  19. }
To copy to clipboard, switch view to plain text mode 
An inheriting class (such as pt1_t) overrides the get/set function for its specialized data.
Qt Code:
  1. class pt1_t : public ptcore_t
  2. {
  3. public:
  4. pt1_t();
  5. void clear();
  6.  
  7. double setTimeStamp(double v);
  8. private:
  9. double gpstime;
  10. }
To copy to clipboard, switch view to plain text mode 
While reading in the data from an external binary file, I declare a ptN_t*, with the value of N depending on a flag in the file itself. Once the point is read, I push_back the ptN_t* into the vector container and move onto the next point. Can I safely assume that vector::clear() will release the memory like I expect it to if I want to read in a different set of points?

One question regarding optimization. When I start reading the points, I already know what point format they will be since that was in the file's header. After reading the XYZ and Intensity data from the file, what comes next will vary depending on the point format. I'd rather not do a dozen if() checks for every point. Is there an efficient way to do this? I'm coding this at the file level, not the point level. Can I check if gpstime is defined, for example? (like #ifdef, except during run-time)