MessageBaseClass.h 1.12 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#pragma once

#include "MessageGroups.h"

namespace ROSBridge {

//! @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 MessageGroups). The Group type
//! is used by the \class ROSJsonFactory to determine the type of the message it creates. The
//! MessageBaseClass belongs to the \struct EmptyGroup. Passing a class belonging to the \struct EmptyGroup to the
//! \class ROSJsonFactory will yield an error.
class MessageBaseClass{
public:
    typedef MessageGroups::EmptyGroup Group;

    MessageBaseClass() {};
Valentin Platzgummer's avatar
Valentin Platzgummer committed
20
    virtual ~MessageBaseClass() {};
21 22 23 24 25 26
    // Avoid sliceing (copy with ROSMessage::Clone or define subclass operator=)!
    MessageBaseClass(const MessageBaseClass &) = delete;
    MessageBaseClass& operator=(const MessageBaseClass &) = delete;

    virtual MessageBaseClass* Clone() const = 0;
};
27 28 29
typedef MessageBaseClass MsgBase;
} // namespace ROSBridge

30