efl::eo::inherit< D, E > Struct Template Reference

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files
- Examples

- Data Structures
- Data Structure Index
- Class Hierarchy
- Data Fields

Public Types | Public Member Functions | Protected Member Functions
efl::eo::inherit< D, E > Struct Template Reference
Efl_Cxx_API

Template-class that allows client code to inherit from EO C++ Classes without the need to make explicit calls to EO methods — that would naturally be necessary to register itself in the EO Subsystem. More...

## Public Types
typedef inherit< D, E... > | inherit_base

## Public Member Functions
| ~inherit ()
| Class destructor.
Eo * | _eo_ptr () const
| Gets the EO Object corresponding to this EO C++ Object. More...
Eo_Class const * | _eo_class () const
| Gets the EO Class corresponding to this EO C++ Class. More...
Eo * | _release ()
template<typename... Args>
| inherit (efl::eo::parent_type _p, Args &&...args)
| Class constructor. More...
template<typename... Args>
| inherit (Args &&...args)

## Protected Member Functions
| inherit (inherit const &other)
| Copy constructor.
inherit & | operator= (inherit const &other)
| Assignment Operator.

## Detailed Description

### template<typename D, typename... E>
struct efl::eo::inherit< D, E >

Template-class that allows client code to inherit from EO C++ Classes without the need to make explicit calls to EO methods — that would naturally be necessary to register itself in the EO Subsystem.

Parameters

  D | The derived class
  O | The parent class
  E | Class extensions (either mixins or interfaces)

The derived class `D` will inherit all EO operations and event callbacks from the parent class `P`, as well as from the `Base Class` (efl::eo::concrete) since every EO C++ Class must inherit from it.

efl::eo::inherit makes use of meta-template elements to build (in compile-time) code capable of registering `D` as an EO Class within EO Subsystem. Each class is registered only once upon instantiation of an object of its type.

Note
  Function overriding is currently not supported.

## Constructor & Destructor Documentation

template<typename D , typename... E>
template<typename... Args>

efl::eo::inherit< D, E >::inherit | ( | efl::eo::parent_type | _p,
|  | Args &&... | args
| ) |  |
| inline

Class constructor.

inherit has a "variadic" constructor implementation that allows from zero to EFL_MAX_ARGS heterogeneous parameters.

References eo_add_ref.

## Member Function Documentation

template<typename D , typename... E>

Eo* efl::eo::inherit< D, E >::_eo_ptr | ( |  | ) | const
| inline

Gets the EO Object corresponding to this EO C++ Object.

Returns
  A pointer to the EO Object.

template<typename D , typename... E>

Eo_Class const* efl::eo::inherit< D, E >::_eo_class | ( |  | ) | const
| inline

Gets the EO Class corresponding to this EO C++ Class.

Returns
  A pointer to the EO Class.