template class Poco::AbstractMetaObject

Overview

A MetaObject stores some information about a C++ class. Moreā€¦

#include <MetaObject.h>

template <class B>
class AbstractMetaObject
{
public:
    // construction

    AbstractMetaObject(const char* name);

    // methods

    const char*
    name() const;

    virtual
    B*
    create() const = 0;

    virtual
    B&
    instance() const = 0;

    virtual
    bool
    canCreate() const = 0;

    virtual
    void
    destroy(B* pObject) const;

    B*
    autoDelete(B* pObject) const;

    virtual
    bool
    isAutoDelete(B* pObject) const;
};

// direct descendants

template <
    class C,
    class B
    >
class MetaObject;

template <
    class C,
    class B
    >
class MetaSingleton;

Detailed Documentation

A MetaObject stores some information about a C++ class.

The MetaObject class is used by the Manifest class. AbstractMetaObject is a common base class for all MetaObject in a rooted class hierarchy. A MetaObject can also be used as an object factory for its class.

Methods

virtual
B*
create() const = 0

Create a new instance of a class.

Cannot be used for singletons.

virtual
B&
instance() const = 0

Returns a reference to the only instance of the class.

Used for singletons only.

virtual
bool
canCreate() const = 0

Returns true iff the create method can be used to create instances of the class.

Returns false if the class is a singleton.

virtual
void
destroy(B* pObject) const

If pObject was owned by meta object, the ownership of the deleted object is removed and the object is deleted.

B*
autoDelete(B* pObject) const

Give ownership of pObject to the meta object.

The meta object will delete all objects it owns when it is destroyed.

Returns pObject.

virtual
bool
isAutoDelete(B* pObject) const

Returns true if the object is owned by meta object.

Overloaded in MetaSingleton - returns true if the class is a singleton.