这是我第一次尝试创建一个基本列表(我在学校需要这个),我得到一个奇怪的错误。
这是剧本:
#include "stdafx.h"
#include<iostream>
#include<conio.h>
using namespace std;
using namespace System;
using namespace System::Threading;
struct nod
{
int info;
nod *leg;
};
int n, info;
nod *v;
void main()
{
....
addToList(v, info); //I get the error here
showList(v); //and here
}
void addToList(nod*& v, int info)
{
nod *c = new nod;
c->info=info;
c->leg=v;
v=c;
}
void showList(nod* v)
{
nod *c = v;
while(c)
{
cout<<c->info<<" ";
c=c->leg;
}
}
确切的错误是: 错误C3861:'addToList':找不到标识符
我不知道为什么我会这样...抱歉,如果这是一个愚蠢的问题,但我对此很新。谢谢你的理解。
答案 0 :(得分:3)
标识符必须在使用前声明。在文本文件中提前移动addToList
的声明和定义。
因此:
#include "stdafx.h"
#include<iostream>
#include<conio.h>
using namespace std;
using namespace System;
using namespace System::Threading;
struct nod
{
int info;
nod *leg;
};
int n, info;
nod *v;
void addToList(nod*& v, int info)
{
nod *c = new nod;
c->info=info;
c->leg=v;
v=c;
}
void showList(nod* v)
{
nod *c = v;
while(c)
{
cout<<c->info<<" ";
c=c->leg;
}
}
void main()
{
....
addToList(v, info); //No more error here
showList(v); //and here
}
答案 1 :(得分:3)
尝试在main上面声明addToList:
void addToList(nod*& v, int info);
同样适用于showList。编译器需要先查看函数声明才能使用它。
答案 2 :(得分:3)
在实现之前,您需要使用前向声明来使用方法。把它放在main之前:
void addToList(nod*& v, int info);
在C / C ++中,只有在声明后才能使用方法。要允许在不同方法之间进行递归调用,可以使用forward declarations以允许使用将向前实现的函数/方法。
答案 3 :(得分:0)
尝试在showList()
之前放置addToList()
和main()
的声明。