특정 모듈이 파생 된 추상 module
클래스가 있습니다. 런타임에서, 나는 설정 파일을 구문 분석하고 설정 파일 내에서 각 모듈의 특정 모듈 유형을 확인 :클래스에 전달 된 포인터 벡터 삭제
class partition
{
public:
//Member functions
private:
//...Other variables
std::vector<module*> modules;
};
적절한 방법은 무엇하십시오 partition
클래스에
std::vector<module*> modules;
module *temp;
//Let nm be the result of parsing as a std::string
if(nm == "type1")
{
temp = new module_1(...);
}
else if(nm == "type2")
{
temp = new module_2(...);
}
else if(nm == "type3")
{
temp = new module_3(...);
}
else
{
//Syntax error
return -1;
}
modules.push_back(temp);
partition p;
p.modules = modules;
나눠 벡터 modules
일단 내가 끝나면이 모듈 포인터에 대한 메모리 할당을 해제 하시겠습니까? 나는 다음과 같이 partition
클래스의 소멸자에서 삭제하려고했으나 세그먼트 오류와 상처 :
partition::~partition()
{
for(unsigned i=0; i<modules.size(); i++)
{
delete modules[i];
}
}
'std :: vector'대신'std :: vector '을 사용하기로 결정한 이유는 무엇입니까? –
LihO
@LihO 그가 가상 기능을 사용한다고 가정합니다. – Lalaland
@Lalaland가 정확합니다. 'module_1'은'module' 등에서 파생됩니다. – Adam27X