Reference files
As an example, the preceding remarks are summarized in the following
header and cpp files
// ========================== BASE CLASS ==========================
#ifndef CLASS_NAME_H
#define CLASS_NAME_H
// include ...
class BaseClassName
{
public:
// -- CONSTRUCTORS --
// From XML
BaseClass(DSXML dsXML);
// From a minimum set of data
BaseClass(typeObject A, typeObject * B);
// -- DESTRUCTOR --
virtual ~BaseClass();
// -- GETTERS AND SETTERS --
// get sizeB
inline const int getSizeB() const
{ return sizeB;}
// assign newValue to sizeB
inline void setSizeB(const int&
newValue) { sizeB = newValue; }
// get the value of objectMemberB
inline const Type getObjectMemberB() const
{ return *objectMemberB; }
// get the pointer
inline Type* getObjectMemberBPtr() const { return
objectMemberB; }
// set the value of the pointed object
inline void setObjectMemberB(const
Type& newValue) { *objectMemberB = newValue; }
// set the pointer
inline void setObjectMemberBPtr(Type newPtr)
{ if(isObjectMemberBAllocatedIn) delete objectMemberB;
objectMemberB = newPtr; isObjectMemberBAllocatedIn=false;}
//...
/// -- OTHER FUNCTIONS --
// able to change data members
returnType func1(...) ;
// which is not supposed to modify data members
returnType func2() const ;
// which can not modify input arguments
returnType func3(const typeInput& inputArg);
// with return argument that can not be modified => can not be
set as an lValue
const returnType func4();
// and combinations of these previous cases ...
// -- PRIVATE/PROTECTED MEMBERS --
protected:
//- Default constructor -
BaseClass();
// - data members -
typeObject ObjectMemberA ;
TypeObject* ObjectMemberB;
bool isObjectMemberBAllocatedIn;
int sizeB;
//...
};
#endif
// =================== DERIVED CLASS
=============================/
// warning !! Implemented in a different file !!
#ifndef DERIVED_CLASS_NAME_H
#define DERIVED_CLASS_NAME_H
// include ...
class DerivedClassName: public BaseClassName
{
public:
// -- CONSTRUCTORS --
// From XML
DerivedClass(DSXML dsXML);
//From a minimum set of data
DerivedClass(typeObject A, typeObject B);
//-- DESTRUCTOR --
~DerivedClass();
// -- GETTERS AND SETTERS --
//...
//-- OTHER FUNCTIONS --
//...
//-- PRIVATE/PROTECTED MEMBERS --
protected:
//- Default constructor -
DerivedClass();
//- data members -
typeObject* ObjectMemberC ;
int sizeC;
bool isObjectMemberBAllocatedIn;
...
};
#endif
//============================== BASE CLASS
==================================//
include ...
// -- CONSTRUCTORS --
// From XML
BaseClass::BaseClass(DSXML *dsXML): objectMemberA(initValue),
sizeB(0), objectMemberB(NULL), isObjectMemberBAllocatedIn(false)
{
// xml data loading
sizeB = ...;
//...
//Memory allocation
objectMemberB = new typeObject(sizeB) ;
isObjectMemberBAllocatedIn = true;
}
// From a minimum set of data
BaseClass::BaseClass(typeObject A, typeObject* B, int
size):objectMemberA(A), sizeB(size),
objectMemberB(NULL),isObjectMemberBAllocatedIn(false)
{
// Memory allocation
objectMemberB = new typeObject(B) ;
// copy constructor
isObjectMemberBAllocatedIn = true;
...
}
// -- DESTRUCTOR --
BaseClass::~BaseClass()
{
if (isObjectMemberBAllocatedIn) delete objectMemberB;
objectMemberB=NULL;
}
// -- Default constructor --
BaseClass::BaseClass(): objectMemberA(0), sizeB(0),
objectMemberB(NULL),isObjectMemberBAllocatedIn(false)
{}
// ======================== DERIVED CLASS
=================================//
// warning !! Implemented in a different file !!
// include ...
//-- CONSTRUCTORS --
// From XML
DerivedClass::DerivedClass(DSXML dsXML): BaseClass(dsXML),
objectMemberC(NULL),sizeC(0), isObjectMemberCAllocatedIn(false)
{
//xml data loading
sizeC= ...;
//...
// Memory allocation
objectMemberC = new typeObject(sizeC) ;
isObjectMemberCAllocatedIn = true;
}
From a minimum set of data
DerivedClass::DerivedClass(typeObject C, typeObject A, typeObject
B, int size): BaseClass(A,B,size), objectMemberC(NULL),
sizeC(size),
isObjectMemberCAllocatedIn(false)
{
objectMemberC = new typeObject(C) ;
isObjectMemberCAllocatedIn = true;
...
}
// -- DESTRUCTOR --
DerivedClass::~DerivedClass()
{
if(isObjectMemberCAllocatedIn) delete objectMemberC;
objectMemberC=NULL;
// Warning: do not delete baseClass members, the base
destructor is automatically called.
}
// ...
//-- Default constructor --
DerivedClass::DerivedClass(): BaseClass(),
objectMemberC(NULL),sizeC(0), isObjectMemberCAllocatedIn(false)
{}