#define COMPONENT(x)
#define COMPONENT_DERIVED(x, y)
class IComponent
{
};
class ComponentBase : public IComponent
{
COMPONENT(ComponentBase)
protected:
static void helperComponentBase(); // COMPONENT(ComponentBase)
};
class ComponentDerived1 : public ComponentBase
{
COMPONENT_DERIVED(ComponentDerived1, ComponentBase)
protected:
static void helperComponentDerived1(); // COMPONENT(ComponentDerived1)
private:
using ComponentBase::helperComponentBase; // COMPONENT_DERIVED(..., ComponentBase)
};
class ComponentDerived2 : public ComponentDerived1
{
COMPONENT_DERIVED(ComponentDerived2, ComponentBase)
protected:
static void helperComponentDerived2(); // COMPONENT(ComponentDerived2)
private:
using ComponentBase::helperComponentBase; // COMPONENT_DERIVED(..., ComponentBase)
};
int main()
{
return 0;
}
};