I've got a particular issue I cannot seem to find a solution to.

I'm using boost.serialization to deserialize audio data into an object that wraps OpenAL. For example, the data I'm writing out would be (in order) a single INT representing the size of the raw data and then the data buffer after that. However, in my "Sound" object, I do not keep the data and length information as state in the class. Instead, I just keep the OpenAL buffer handle. In order for this class to be able to implement save(), it would need to have extra state, which would not be appropriate. Basically, I need to have a separate object dedicated to saving the sound data, and another for loading it.

Is this possible? Perhaps there is a recommended design?