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

最佳答案

您只需要将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和智能指针的信息。

关于c++ - 无法将结构的项目复制到另一个结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53900694/

10-11 22:44
查看更多