#include <iostream>
using namespace std;

class CEnabled
{
public:
	CEnabled(bool bEnabled = false);
	bool IsEnabled() const { return m_bEnabled; }
private:
	bool m_bEnabled;
};

CEnabled::CEnabled(bool bEnabled)
{
  m_bEnabled = bEnabled;
}

// Folgender Konstrukt bzgl. abgeleiteter Klassen sei jetzt gegeben:

class CBase1 : public CEnabled
{
public:
  CBase1() : CEnabled(false)
  {
  }
};

class CBase2 : public CEnabled
{
public:
  CBase2() : CEnabled(true)
  {
  }
};


class CDerived : public CBase1, public CBase2, public CEnabled 
{
public:
	CDerived();
};

CDerived::CDerived()
    : CEnabled(true)
//  : CBase1::CEnabled(false), CBase2::CEnabled(true)
{
}

int main() {
	// your code goes here
	CDerived derived;
	cout << "Base1: " << derived.CBase1::IsEnabled() << endl;
	cout << "Base2: " << derived.CBase2::IsEnabled() << endl;
	//cout << "Enabled: " << derived.IsEnabled() << endl;
	//cout << "Enabled: " << derived.CDerived::CEnabled::IsEnabled() << endl;
	return 0;
}
