链接列表...声明与原型不兼容

时间:2016-08-19 19:29:03

标签: c++ linked-list

嘿伙计,所以当我尝试为我的链表类创建此函数时,我收到此错误。我遇到问题的功能是我的搜索功能。我还没有开始创建该功能,但我收到的错误是在搜索功能的声明中。在NodePtr下的第38行,它表示它未定义,在搜索下它显示错误:声明与“LinkedList :: NodePtr”(在第17行声明)不兼容。代码如下。任何帮助表示赞赏。

// LinkedListProject.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <list>
using namespace std;
class LinkedList {
public:
    struct Node {
        int data;
        Node* link;
    };
    typedef Node* NodePtr;
    //NodePtr head = new Node;
    void head_insert(NodePtr& head, int the_number);
    NodePtr search(NodePtr head, int target);
private:
};


int main()
{
    LinkedList obj;
    //obj.head->data = 3;
    //obj.head->link = NULL;
    return 0;
}


void LinkedList::head_insert(NodePtr& head, int the_number) {
    NodePtr temp_ptr = new Node;
    temp_ptr->data = the_number;
    temp_ptr->link = head;
    head = temp_ptr;
}

NodePtr LinkedList::search(NodePtr head, int target)
{
    return NodePtr();
}

2 个答案:

答案 0 :(得分:2)

您必须设置定义NodePtr的正确范围。

 LinkedList::NodePtr LinkedList::search(NodePtr head, int target)
{
    return LinkedList::NodePtr();
}

答案 1 :(得分:1)

NodePtr是一个范围为您的类的名称。要在课外使用它,您需要LinkedList::NodePtr。所以你必须改变

NodePtr LinkedList::search(NodePtr head, int target)

LinkedList::NodePtr LinkedList::search(NodePtr head, int target)

现在你可能会问,“但等等,我不需要搜索,是什么给出了?”,答案是在你做完之后

LinkedList::search

将类名注入函数的其余范围。因此,我们不需要明确限定任何作用于该类的名称。