Я получаю сообщение об ошибке "идентификатор не найден" - PullRequest
3 голосов
/ 23 сентября 2011

Это моя первая попытка создать базовый список (мне это нужно в школе), и я получаю странную ошибку.

Это скрипт:

#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': идентификатор не найден

Я не знаю, почему я это понимаю ... извините, если это глупый вопрос, но я очень новичок в этом. Спасибо за понимание.

Ответы [ 4 ]

3 голосов
/ 23 сентября 2011

Попробуйте объявить addToList над main:

void addToList(nod*& v, int info);

Аналогично для showList.Компилятор должен увидеть объявление функции, прежде чем он сможет ее использовать.

3 голосов
/ 23 сентября 2011

вам нужно поместить предварительное объявление для использования метода перед его реализацией.Поместите это перед main:

void addToList(nod*& v, int info);

В C / C ++ метод должен использоваться только после его объявления.Чтобы разрешить рекурсивный вызов между различными методами, вы можете использовать предварительные объявления , чтобы разрешить использование функции / метода, который будет реализован в прямом направлении.

3 голосов
/ 23 сентября 2011

Идентификаторы должны быть объявлены до их использования.Переместите ваше объявление и определение 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
}
0 голосов
/ 23 сентября 2011

Попробуйте разместить объявления showList() и addToList() перед main().

...