Как исправить «синтаксический идентификатор ошибки C2061« стек »» в Visual Studio? - PullRequest
0 голосов
/ 15 февраля 2019

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

//function.h
#pragma once 

void dfs(int start, int goal, bool visited[], int **matrix, int size,
         bool &found, stack<int>& path);
//function.cpp
#include "function.h"
#include <iostream>
#include <stack>

using namespace std;

void dfs(int start, int goal, bool visited[], int **matrix, int size,
         bool &found, stack<int>& path)
{
    visited[start] = true;
    cout<<start<<" ";
    path.push(start);

    if (start == goal)
        found = true;

    for (int k = 0; k < size; k++)
    {
        if (visited[k] == false && matrix[start][k] && found == false )
            dfs(k,goal,visited,matrix,size,found,path);
        path.pop();
    }
}
//main.cpp
#include "function.h"
#include <iostream>
#include <fstream>
#include <stack>

using namespace std;
void main()
{
    stack<int> path;

    for(int i=0; i<N; i++)
        visit[i] = false; //init visit

    for(int i = 0; i < N; ++i)
        matrix[i] = new int[N]; // build rows

    for(int i = 0; i < N; ++i)
    {
        for(int j = 0; j < N; ++j)
        {
            fin>>matrix[i][j];
        }
    }

    dfs(start, end, visit, matrix, 5, found, path);    
}

Он должен работать, но он продолжает давать мне эту синтаксическую ошибку: «ошибка C2061: синтаксическая ошибка: идентификатор»стек ""

1 Ответ

0 голосов
/ 15 февраля 2019

Ваш заголовочный файл должен выглядеть следующим образом

//function.h
#pragma once 

#include <stack>

void dfs (int start, int goal, bool visited[], int **matrix, int size, bool 
&found, std::stack<int>& path);

Вам нужно #include <stack>, прежде чем будет замечен прототип функции dfs.

Вы должны полностью указать имя типа stack (т. е. std::stack не stack), поскольку using namespace std; является очень плохой идеей в заголовочном файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...