我有结构Node
和结构UniqueInstructor
。两者都是单链接列表。我已经用一些值填充了struct Node。现在,我需要用Node的特定于结构的值(std::string instructor
填充第二个UniqueInstructor结构。
这是我的结构的样子:
// main struct that I already filled with data
struct Node {
Node* pNext;
std::string data1;
std::string data2;
std::string day;
std::string group;
std::string instructor; // these are the items I want to copy
// into the UniqueInstructor struct
std::string course;
};
// my 'target' struct, also linked list
struct UniqueInstructor {
UniqueInstructor* pNext;
std::string instructor;
};
现在,我要做的就是将所有std::string instructor
值从Node
复制到UniqueInstructor
。
我尝试了一堆东西,例如:
void DuplicateInstructor(Node *&pHead)
{
pHead = new UniqueInstructor { pHead, pHead->instructor };
}
但是我遇到了错误。在这种情况下:
cannot convert 'Node*' to 'UniqueInstructor*' in initialization
我的问题可能在于将struct传递给该函数。请原谅,我是结构和指针的新手。谢谢你的帮助。
答案 0 :(得分:1)
您只需要将Node::instructor
字段复制到UniqueInstructor::instructor
字段中。这两个字段均为std::string
,所以没问题。
void like_this(Node& n, UniqueInstructor& i)
{
i.instructor = n.instructor;
}
现在还不清楚您实际上试图实现什么以及您的程序结构是什么,因此我无法告诉您在何处或如何获得Instructor
对象。在上面的示例中,两个对象都存在。同样,您无法将Node
与UniqueInstructor
链接。 Node::pNext
和UniqueInstructor::pNext
只是完全不同的类型,所以我不知道您要在这里做什么。
此外,显式new
/ delete
调用是非常不好的做法。它们在C ++中绝对没有位置(在库实现之外)。太多的头痛,更重要的是,有太多的错误余地(异常的内存泄漏)。请阅读有关C ++中的RAII和智能指针的信息。