#ifndef _IMODULE_
#define _IMODULE_
#include "stdafx.h"
class iModule
{
public:
int index;
iModule(){};
~iModule(){};
virtual void initialize(int idx){};
virtual bool isConnected();
protected:
virtual bool programId(){ return true;}
};
#endif
iModule.h
#include "stdafx.h"
#include "iModule.h"
using namespace std;
bool iModule::isConnected()
{
cout << "Module" << index <<"is connected"<<endl;
return true;
}
iModule.cpp
#ifndef _IDETECTORMGR_
#define _IDETECTORMGR_
#include "stdafx.h"
#include "iModule.h"
class iDetectorMgr
{
public:
static const int arraySize = 64;
int moduleNum;
iModule* moduleArray[arraySize];
iDetectorMgr();
~iDetectorMgr();
virtual void create(){};
virtual void initialize();
virtual void deleteAll(){};
};
#endif
iDetectorMgr.h
#include "stdafx.h"
#include "iDetectorMgr.h"
iDetectorMgr::iDetectorMgr()
{
moduleNum = 0;
}
iDetectorMgr::~iDetectorMgr()
{
}
void iDetectorMgr::initialize()
{
int i=0;
for(i = 0; i < moduleNum; i++)
{
moduleArray[i]->initialize(i);
}
return ;
}
iDetectorMgr.cpp
#ifndef _MODULESV_
#define _MODULESV_
#include "stdafx.h"
#include "iModule.h"
class moduleSV:public iModule
{
public:
void initialize(int idx);
protected:
bool programId();
};
#endif
moduleSV.h
#include "stdafx.h"
#include "moduleSV.h"
void moduleSV::initialize(int idx)
{
index = idx;
programId();
}
bool moduleSV::programId()
{
cout << "program ID SV" << index<<endl;
return true;
}
moduleSV.cpp
#ifndef _DETECTORSV_
#define _DETECTORSV_
#include "stdafx.h"
#include "iDetectorMgr.h"
class detectorSV:public iDetectorMgr
{
public:
static const int moduleSvNum = 6;
detectorSV();
~detectorSV();
virtual void create();
virtual void deleteAll();
};
#endif
detectorSV.h
#include "stdafx.h"
#include "detectorSV.h"
#include "moduleSV.h"
detectorSV::detectorSV()
{
create();
}
detectorSV::~detectorSV()
{
deleteAll();
}
void detectorSV::create()
{
iModule *p;
for(int i = 0;i < moduleSvNum; i++)
{
p = static_cast<iModule*>(new moduleSV());
moduleArray[i] = p;
}
moduleNum = moduleSvNum;
}
void detectorSV::deleteAll()
{
for(int i = 0;i < moduleSvNum; i++)
{
delete moduleArray[i];
moduleNum = 0;
}
}
detectorSV.cpp
// model.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "detectorSV.h"
int _tmain(int argc, _TCHAR* argv[])
{
detectorSV detSVMgr;
detSVMgr.initialize();
return 0;
}