У меня есть классы A
, B
, C
, D
и следующая иерархия:
class A {
B* b;
};
class B {
C<D>* c;
};
template <class T>
class C<T> {
list<T*> ds;
};
class D {
};
Сначала я выделяю A
как член A*
внутри базового класса, используя new A()
. В пределах A
я выделяю b
, используя new B()
. В пределах B
я выделяю c
, используя new C<D>()
.
Как только я пытаюсь вызвать ds.size()
, программа вылетает. EXC_BAD_ACCESS
возникает внутри ds
, когда он пытается вызвать свой метод begin()
в size()
.
Вы знаете, почему это произошло? Я использую C ++ в течение нескольких лет, но это мой первый опыт использования указателей в стандартных контейнерах, поэтому, возможно, я упускаю что-то очевидное.