#include "stdio.h"
class CBase
{
protected:
  CBase()
  {
	  printf("CBase()\n");

  }
};

class CDerived:public CBase
{
private:
  CDerived()
  {
	  printf("CDerived\n");

  }
  int m1;
  int m2;

public:
  static CDerived* NewInstance();
  int getset1(bool get,int i=0);
  int getset2(bool get,int i=0);
};

 CDerived* CDerived::NewInstance()
  {
	  return new CDerived();
  }

int CDerived::getset1(bool get,int i)
  {
	  if(get)
		  return m1;
	  else
		  return (m1=i);

  }

int CDerived::getset2(bool get,int i)
  {
	  if(get)
		  return m2;
	  else
		  return (m2=i);

  }
#if !defined(STDLIB_H)
#define STDLIB_H

class CDerived
{
public:
  static CDerived* NewInstance();
  int getset1(bool get,int i=0);
  int getset2(bool get,int i=0);
};

#endif