прочел статью "STL и шаблоны" и попробовал применить STL в программе, которую сейчас пишу. и получилась некоторая вещь, которую не могу понять...
задал структуру и класс с указателем на список таких структур
typedef struct _Info {
ULONG Id;
ULONG Type;
} Info, *PInfo;
class CClassA
{
list <Info> *pMyList;
public:
CClassA();
~CClassA();
void setList();
};
Info i_01;
CClassA::CClassA()
{
pMyList = new list <Info>;
}
CClassA::~CClassA()
{
delete pMyList;
}
void CClassA::setList()
{
pMyList->push_back(i_01);
}
определил еще один класс, содержащий переменную-член и список элементов предыдущего класса
class CClassB
{
CClassA CLASS_A;
list <CClassA> *pMyClassAList;
public:
CClassB();
~CClassB();
void setList();
};
CClassB::CClassB()
{
pMyClassAList = new list <CClassA>;
CLASS_A.setList();
}
CClassB::~CClassB()
{
delete pMyClassAList;
}
void CClassB::setList()
{
pMyClassAList->push_back(CLASS_A);
}
вызываю так
CClassB* pClassB = new CClassB;
pClassB->setList();
delete pClassB;
при выполнении оператора
delete pClassB;
вываливается по недопустимому обращению к памяти
если убрать в деструкторе класса B оператор delete то не вываливается
похоже (по хождению в отладчике) что этот оператор delete вызывает лишнее обращение к деструктору класса A
но ведь по идее он должен быть