我创建了一个头文件ll.h
,其中包含2个类。代码如下所示:
#pragma once
#include<iostream>
#include<conio.h>
using namespace std;
class N{
public:
int data;
N *next;
public:
N(int);
~N();
};
class ll{
public:
N *head;
public:
ll();
~ll();
void aFr(N*);
void aEn(N*);
};
N::N (int d){
data = d;
next = NULL;
}
N::~N{}
ll::ll(){
head = NULL;
}
ll::~ll(){}
void aFr(N* n){
n->next = head; //identifier "head" undefined
head = n;
}
void aEn(N* n){
if (head == NULL)// identifier "head" undefined
{
head = n;
n->next = NULL;
}
}
两个函数中的head
似乎不应调用任何错误。
我仍然是一个初学者,所以请原谅我。
我知道应该没问题,但是我为类和声明本身使用了不同的窗口。
我正在使用Visual Studio 2010运行代码。
答案 0 :(得分:3)
1)在这里:
N::~N{}
您忘记了析构函数~N()
的{{3}}:
N::~N(){};
2)在这里:
void aFr(N* n){
在这里:
void aEn(N* n){
您忘记了the parentheses来将功能表示为class ll
的方法
void ll::aFr(N* n){
n->next = head; //identifier "head" undefined
head = n;
}
void ll::aEn(N* n){
if (head == NULL)// identifier "head" undefined
{
head = n;
n->next = NULL;
}
}
在进行这些更改后,它可以正常编译。
答案 1 :(得分:0)
您忘记了方法aFR和aEn的类方法声明(ll:)
void ll::aFr(N* n){
n->next = head; //identifier "head" undefined
head = n;
}
void ll::aEn(N* n){
if (head == NULL)// identifier "head" undefined
{
head = n;
n->next = NULL;
}
}