无法将结构的项目复制到另一个结构

时间:2018-12-23 02:11:00

标签: c++ pointers data-structures struct linked-list

我有结构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传递给该函数。请原谅,我是结构和指针的新手。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

您只需要将Node::instructor字段复制到UniqueInstructor::instructor字段中。这两个字段均为std::string,所以没问题。

void like_this(Node& n, UniqueInstructor& i)
{
    i.instructor = n.instructor;
}

现在还不清楚您实际上试图实现什么以及您的程序结构是什么,因此我无法告诉您在何处或如何获得Instructor对象。在上面的示例中,两个对象都存在。同样,您无法将NodeUniqueInstructor链接。 Node::pNextUniqueInstructor::pNext只是完全不同的类型,所以我不知道您要在这里做什么。

此外,显式new / delete调用是非常不好的做法。它们在C ++中绝对没有位置(在库实现之外)。太多的头痛,更重要的是,有太多的错误余地(异常的内存泄漏)。请阅读有关C ++中的RAII和智能指针的信息。