More specifically:
I will guarantee to provide Alt, Temp, WT, WV, Elev at TO and Dest. Indeed, you are encouraged to accept both a ground level and an "upper winds" report for these locations (that is Temp, WT, WV is given at ground, 3000', 6000', 9000', 12000, 18000';) (Elev. and Alt., of course, apply thoughout all altitudes.)
As for any WP, I may or may not give that information (ie. a WP may come WITHOUT any information about Alt, Temp, WT, WV, Elev. In such case, to obtain that information, interpolate linearly between the nearest such information ahead and behind.
On a further point of detail, if the user can indeed omit certain information from a WP, is the user constrained to provide either all of the information or none of the information, or can the user provide whichever of Alt, Temp, WT, etc he or she desires?
If the WP does have associated information, none of what you want will be missing. That is, whatever you need at TO and Dest will also be provided at the WP (ie. all of the above mentioned information).
A similar question arises in the specification of Winds Aloft information. Are there certain specified altitudes for which this information is provided, or can they be specified for any discrete range of altitudes?
One odd thing about the 3000' report is that it comes without associated Temp. Since you know the Temp at the ground and you know how Temp decreases with altitude (the "lapse rate"), the Temp at 3000' is always just approximated by the ground Temp minus the difference between 3000' and the Elev times the lapse rate. This estimate is much less accurate as you go higher, so actual temperatures are given at the other elevations.
(In the following, an "agent" can be a procedure, an object, a class, a module, a subsystem)
For more direct information on the elements of C++ syntax that relate to these principles, I remind you that the course web page has a good C++ Tutorial link.