嘿伙计,所以当我尝试为我的链表类创建此函数时,我收到此错误。我遇到问题的功能是我的搜索功能。我还没有开始创建该功能,但我收到的错误是在搜索功能的声明中。在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();
}
答案 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
将类名注入函数的其余范围。因此,我们不需要明确限定任何作用于该类的名称。