I have the following:

1. An interface:

class IDeviceClientRequest
{
public:
   /** Empty virtual destructor. */
   virtual ~IDeviceClientRequest() {}
  
   /** Virtual methods to invoke on the smart pointer. */
   virtual EClientMessageIdentifier getMessageId() = 0;
}; // IDeviceClientRequest


2. A template class:

template<class Request>
class CDeviceClientRequest : public IDeviceClientRequest
{
public:
   // ...
   I have excluded the majority of the code for conciseness
   // ...

private:
   /**
    * Serialize or de-serialize the object.
    *
    * @param archive
    *           When the class Archive corresponds to an output archive, the
    *           & operator is defined similar to <<.  Likewise, when the class Archive
    *           is a type of input archive the & operator is defined similar to >>.
    * @param version
    *           Version identifier for backwards compatibility between objects.
    */
   friend class boost::serialization::access;
   template<class Archive>
   void serialize(Archive            &archive,
                  const unsigned int  version)
   {
      archive & m_iMessageId
              & m_oData;
   }
}; // CDeviceClientRequest

3. A method to serialize from a file:

// Server receieves a request.
void devices::comms::CDeviceCommunication::receiveRequest(
   std::unique_ptr<devices::request::IDeviceClientRequest>& request)
{
   // Open the file for read.
   std::ifstream file(getFilename().c_str());
  
   // Use boost to serialize the object from the file.
   boost::archive::binary_iarchive archive(file);
   archive >> *request;

   // Close the file.
   file.close();
}

What do I need to add to the interface class to stop the following compile error:

error C2039: 'serialize' : is not a member of 'devices::request::IDeviceClientRequest'

Thanks,
-- 
Marcus A.T MacWilliam, Senior Software Engineer. 1Spatial Ltd.
Tel: +44 (0)1223 420414, ext 2289,    Mob: +44 (0)7803 706597.
E-Mail: marcus.macwilliam@1spatial.com Skype:marcus.macwilliam

Tennyson House, 7 Cambridge Business Park, Cambridge, CB4 0WZ.
Registered in England No. 4785688,     VAT Reg. No. 135539408.
Website: http://www.1spatial.com/    E-mail: info@1spatial.com