我在编码项目/作业上打了第一道墙。
我要将功能实现到已在某个阶段完成的代码中,并且我无法更改给定的代码,因此我必须解决给定的结构。
简而言之,代码从文本文件中读取族关系,并使用族关系数据填充数据库,稍后允许用户打印出他想要访问的信息。
我遇到的问题是了解我如何以及如何在作业中使用struct
给我。结构是
struct Person
{
std::string id_ = NO_ID;
int height_ = NO_HEIGHT;
std::vector<Person*> parents_{nullptr, nullptr};
std::vector<Person*> children_;
};
我至少在数据结构的初始化阶段使用它。
我首先使用
调用main.cpp中的进程database->addRelation(it->child_, it->parents_, std::cout);
在命名/高度添加阶段,我只需使用
进行操作MyPerson.id_ = id;
MyPerson.height_ = height;
其中MyPerson
由Person MyPerson;
但据我所知,我必须以某种方式访问对象指针,以便能够填充向量,以便在我想要向此人添加子项/父项时。
初始化人的姓名,身高和家庭关系时调用的类函数是这两个:
void Familytree::addNewPerson(const string &id, const int &height, ostream &output)
{
MyPerson.id_ = id;
MyPerson.height_ = height;
}
void Familytree::addRelation(const string &child,
const std::vector<string>
&parents, ostream &output)
{
}
addRelation功能是我很难上班的原因。简单地将字符串附加到它不会起作用,因为它期望Person * -objects,据我所知,它只是指向其他人的指针,但我不确定如何访问它们
另外,如果此处有任何内容过多或者如果我遗漏任何重要内容,请与我联系,我会尽我所能编辑
使用其他信息进行编辑:
我在这里可以看到的唯一可以添加的东西是
Person MyPerson;
和类函数addNewPerson
的内容。其他片段我不能以任何形式或形式改变。
编辑#2
目前的进展,我是否离目标更近或更远是值得商榷的
我的人员地图是using Personmap = std::map<std::string, Person >;
我在addNewPerson中使用
persons_[id] = id;
persons_[id] = height;
,但是我仍然会随机尝试不同的东西来尝试使其适用于我需要以某种方式将对象添加到向量的下一阶段。
我遇到的最大问题是,我现在知道如何解决*Person
和Person
的差异