Я пишу класс, содержащий указатель на родительский объект того же типа (подумайте о Qt-системе Qt). Каждый объект имеет один родительский элемент, и родительский объект не должен быть уничтожен, когда ребенок уничтожается (очевидно).Схема родительского ребенка
class MyClass
{
public:
MyClass(const MyClass* ptr_parent): parent(parent){};
~MyClass(){ delete[] a_children; };
private:
const MyClass* ptr_parent; // go to MyClass above
MyClass* a_children; // go to MyClass below
size_t sz_numChildren; // for iterating over a_children
}
(простите мой инлайн кодирование, это только для краткости)
Будет разрушив «Мастер MyClass» заботиться о всех детях? Ни один ребенок не должен уметь убивать своего родителя, потому что тогда у меня были бы указатели в моей основной программе для уничтожения объектов, правильно?
Почему бы вам не спросить? Мне нужен способ «итерации» через все подкаталоги и поиск всех файлов на независимом от платформы уровне. Создание этого дерева будет обрабатываться встроенными API, а остальное - нет. С чего начать?
Спасибо!
+1 для замены динамического массива детей на «вектор». – Brian
Вектор перешел мне в голову, но казался нелогичным, так как многие объекты MyClass имели бы пустой список детей (они бы напоминали файлы в дереве). Но вектор это :). Родительское уведомление также является хорошей идеей, не думал, что пока: s Итак: вектор + родительское знание. Благодаря! – rubenvb