\hypertarget{structefl_1_1eo_1_1inherit}{}\section{efl\+:\+:eo\+:\+:inherit$<$ D, E $>$ Struct Template Reference}
\label{structefl_1_1eo_1_1inherit}\index{efl\+::eo\+::inherit$<$ D, E $>$@{efl\+::eo\+::inherit$<$ D, E $>$}}


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


\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
typedef \hyperlink{structefl_1_1eo_1_1inherit}{inherit}$<$ D, E... $>$ {\bfseries inherit\+\_\+base}\hypertarget{structefl_1_1eo_1_1inherit_ad5b730e9332e496e0b9ec2909bec34db}{}\label{structefl_1_1eo_1_1inherit_ad5b730e9332e496e0b9ec2909bec34db}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{structefl_1_1eo_1_1inherit_aef06f246c2b89228700755267d9769ab}{$\sim$inherit} ()\hypertarget{structefl_1_1eo_1_1inherit_aef06f246c2b89228700755267d9769ab}{}\label{structefl_1_1eo_1_1inherit_aef06f246c2b89228700755267d9769ab}

\begin{DoxyCompactList}\small\item\em Class destructor. \end{DoxyCompactList}\item 
\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} $\ast$ \hyperlink{structefl_1_1eo_1_1inherit_aaf2f829f60297bc40b1d27a54b1f0f39}{\+\_\+eo\+\_\+ptr} () const 
\begin{DoxyCompactList}\small\item\em Gets the {\itshape EO Object} corresponding to this {\itshape EO C++ Object}. \end{DoxyCompactList}\item 
\hyperlink{group__Eo_ga88d29df76a2921aa5478803156d83be5}{Eo\+\_\+\+Class} const $\ast$ \hyperlink{structefl_1_1eo_1_1inherit_a5b93ac471b6e71a6817007f68fd44f0a}{\+\_\+eo\+\_\+class} () const 
\begin{DoxyCompactList}\small\item\em Gets the {\itshape EO Class} corresponding to this {\itshape EO C++ Class}. \end{DoxyCompactList}\item 
\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} $\ast$ {\bfseries \+\_\+release} ()\hypertarget{structefl_1_1eo_1_1inherit_aa612bfe20231661a44d9535caab47f56}{}\label{structefl_1_1eo_1_1inherit_aa612bfe20231661a44d9535caab47f56}

\end{DoxyCompactItemize}
{\bf }\par
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$typename... Args$>$ }\\\hyperlink{structefl_1_1eo_1_1inherit_a33911b3e70a8018a4c0da5a1939b1246}{inherit} (\hyperlink{structefl_1_1eo_1_1parent__type}{efl\+::eo\+::parent\+\_\+type} \+\_\+p, Args \&\&...args)
\begin{DoxyCompactList}\small\item\em Class constructor. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename... Args$>$ }\\{\bfseries inherit} (Args \&\&...args)\hypertarget{structefl_1_1eo_1_1inherit_aea6ddb2450212514a7de6a057e2a4eba}{}\label{structefl_1_1eo_1_1inherit_aea6ddb2450212514a7de6a057e2a4eba}

\end{DoxyCompactItemize}

\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{structefl_1_1eo_1_1inherit_ae3bb06a2c954b11c06bcf846bcb98c3d}{inherit} (\hyperlink{structefl_1_1eo_1_1inherit}{inherit} const \&other)\hypertarget{structefl_1_1eo_1_1inherit_ae3bb06a2c954b11c06bcf846bcb98c3d}{}\label{structefl_1_1eo_1_1inherit_ae3bb06a2c954b11c06bcf846bcb98c3d}

\begin{DoxyCompactList}\small\item\em Copy constructor. \end{DoxyCompactList}\item 
\hyperlink{structefl_1_1eo_1_1inherit}{inherit} \& \hyperlink{structefl_1_1eo_1_1inherit_ad6585f2ac6fedc07fc68e5c6f5e4003a}{operator=} (\hyperlink{structefl_1_1eo_1_1inherit}{inherit} const \&other)\hypertarget{structefl_1_1eo_1_1inherit_ad6585f2ac6fedc07fc68e5c6f5e4003a}{}\label{structefl_1_1eo_1_1inherit_ad6585f2ac6fedc07fc68e5c6f5e4003a}

\begin{DoxyCompactList}\small\item\em Assignment Operator. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$typename D, typename... E$>$\\*
struct efl\+::eo\+::inherit$<$ D, E $>$}

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


\begin{DoxyParams}{Parameters}
{\em D} & The derived class \\
\hline
{\em O} & The parent class \\
\hline
{\em E} & Class extensions (either mixins or interfaces)\\
\hline
\end{DoxyParams}
The derived class {\ttfamily D} will inherit all EO operations and event callbacks from the parent class {\ttfamily P}, as well as from the {\ttfamily Base Class} (\hyperlink{structefl_1_1eo_1_1concrete}{efl\+::eo\+::concrete}) since every EO C++ Class must inherit from it.

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

\begin{DoxyNote}{Note}
Function overriding is currently not supported. 
\end{DoxyNote}


\subsection{Constructor \& Destructor Documentation}
\index{efl\+::eo\+::inherit@{efl\+::eo\+::inherit}!inherit@{inherit}}
\index{inherit@{inherit}!efl\+::eo\+::inherit@{efl\+::eo\+::inherit}}
\subsubsection[{\texorpdfstring{inherit(efl\+::eo\+::parent\+\_\+type \+\_\+p, Args \&\&...\+args)}{inherit(efl::eo::parent_type _p, Args &&...args)}}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename D , typename... E$>$ template$<$typename... Args$>$ {\bf efl\+::eo\+::inherit}$<$ D, E $>$\+::{\bf inherit} (
\begin{DoxyParamCaption}
\item[{{\bf efl\+::eo\+::parent\+\_\+type}}]{\+\_\+p, }
\item[{Args \&\&...}]{args}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\hypertarget{structefl_1_1eo_1_1inherit_a33911b3e70a8018a4c0da5a1939b1246}{}\label{structefl_1_1eo_1_1inherit_a33911b3e70a8018a4c0da5a1939b1246}


Class constructor. 

\hyperlink{structefl_1_1eo_1_1inherit}{inherit} has a \char`\"{}variadic\char`\"{} constructor implementation that allows from zero to E\+F\+L\+\_\+\+M\+A\+X\+\_\+\+A\+R\+GS heterogeneous parameters. 

References eo\+\_\+add\+\_\+ref, and efl\+::eo\+::parent.



\subsection{Member Function Documentation}
\index{efl\+::eo\+::inherit@{efl\+::eo\+::inherit}!\+\_\+eo\+\_\+ptr@{\+\_\+eo\+\_\+ptr}}
\index{\+\_\+eo\+\_\+ptr@{\+\_\+eo\+\_\+ptr}!efl\+::eo\+::inherit@{efl\+::eo\+::inherit}}
\subsubsection[{\texorpdfstring{\+\_\+eo\+\_\+ptr() const }{_eo_ptr() const }}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename D , typename... E$>$ {\bf Eo}$\ast$ {\bf efl\+::eo\+::inherit}$<$ D, E $>$\+::\+\_\+eo\+\_\+ptr (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}\hypertarget{structefl_1_1eo_1_1inherit_aaf2f829f60297bc40b1d27a54b1f0f39}{}\label{structefl_1_1eo_1_1inherit_aaf2f829f60297bc40b1d27a54b1f0f39}


Gets the {\itshape EO Object} corresponding to this {\itshape EO C++ Object}. 

\begin{DoxyReturn}{Returns}
A pointer to the {\itshape EO Object}. 
\end{DoxyReturn}
\index{efl\+::eo\+::inherit@{efl\+::eo\+::inherit}!\+\_\+eo\+\_\+class@{\+\_\+eo\+\_\+class}}
\index{\+\_\+eo\+\_\+class@{\+\_\+eo\+\_\+class}!efl\+::eo\+::inherit@{efl\+::eo\+::inherit}}
\subsubsection[{\texorpdfstring{\+\_\+eo\+\_\+class() const }{_eo_class() const }}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename D , typename... E$>$ {\bf Eo\+\_\+\+Class} const$\ast$ {\bf efl\+::eo\+::inherit}$<$ D, E $>$\+::\+\_\+eo\+\_\+class (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}\hypertarget{structefl_1_1eo_1_1inherit_a5b93ac471b6e71a6817007f68fd44f0a}{}\label{structefl_1_1eo_1_1inherit_a5b93ac471b6e71a6817007f68fd44f0a}


Gets the {\itshape EO Class} corresponding to this {\itshape EO C++ Class}. 

\begin{DoxyReturn}{Returns}
A pointer to the {\itshape EO Class}. 
\end{DoxyReturn}
