#pragma once #include "ROSMessageGroups.h" //! @brief Abstract base class for all ROS Messages Types. //! //! Abstract base class for all ROS Messages Types. This class defines a basic interface //! every class must fullfill if it takes advantages of the \class ROSJsonFactory. //! Every class must define the public typedef Group, which associates it to a message Group (\see ROSMessageGroups). The Group type //! is used by the \class ROSJsonFactory to determine the type of the message it creates. The //! ROSMessageType belongs to the \struct EmptyGroup. Passing a class belonging to the \struct EmptyGroup to the //! \class ROSJsonFactory will yield an error. template class ROSMessageType{ public: typedef EmptyGroup Group; ROSMessageType() {}; ~ROSMessageType() {}; // Avoid sliceing (copy with ROSMessage::Clone)! ROSMessageType(const ROSMessageType &) = delete; ROSMessageType& operator=(const ROSMessageType &) = delete; virtual ROSMessageType* Clone() const = 0; };