Здравствуйте, niXman, Вы писали:
SVZ>>В зависимости от задачи. Может оформить аналогично std::string + std::string_view.
X>получится то, чего не хочется — куча проверок на "дите"/"родитель"
ну т.к. ты не озвучил, что за задачу пытаешься решить, то приходится гадать.
может и не надо делать проверок
SVZ>>У себя в проекте я бы разделил твой класс на собственно "хранилище", в котором где лежит vector<type> и "итератор"
X>получится нелогично. потому что каждое "дите" может порождать других "детей" и является для них "родителем".
когда твой объект становится "родителем", у него появляется свой собственный vector<type> или все они пользуются единым (назовём его "корневым")?
Например для работы с xml я использовал разделение на "Документ" и "узел".
Документ хранит все данные и обспечивает целостность.
А чтение, добавление, удаление узлов и атрибутов выполнялось через итераторы.
Как-то так.
dom::Document document;
...
dom::inode root = dom::root(document);
for(dom::inode child = root.getChild(); !child.end(); ++child )
{
if ( xml::IsTag(child, NODE_TYPE) )
doSomething(child);
}