Member *p = (*i)->pson; while (p->pbro!=nullptr) p = p->pbro; p->pbro = temp; } next.push_back(temp); temp = nullptr; break; } } //若成员的父亲不是这一代的成员,则将next赋予genely,迭进下一代 if (temp != nullptr){ genely = next;//迭进下一代 next.clear();//清空next for (auto i : genely){//将成员放入家族树中 if (i->name == temp->father){ i->pson = temp; next.push_back(temp); temp = nullptr; break; } } } //动态创建临时成员变量,用于存储输入的下一个成员的信息
temp = new Member; } infile.close();//关闭存储成员信息的文件 //若文件中没有成员信息,将root置为空 if (root->name == \未知\) root = nullptr; //打开存储家庭总体信息的文件,读入信息 infile.open(\, ios::in | ios::_Nocreate); if (!infile){ return false; } infile >> total >> aveAge >> aveHeight >> aveMember >> ratio; infile.close();//关闭文件 return true; } Member *FamilySystem::seek(string nam){ //若家谱树为空,返回空指针 if (root == nullptr) return nullptr; //若root不为空,继续查找 Member *store = nullptr;//存储返回的指针 vector