g ++:尽管包含了标题,但未在此范围内声明

时间:2017-04-01 14:34:10

标签: c++ compiler-errors header include

我确信这是一个微不足道的错误。尽管如此,我无法在Stackoverflow上找到错误或解决方案。 我收到了上面提到的struct Transition错误,看似在这里声明: Transition.h:

#ifndef ZOCK_TRANSITION_H
#define ZOCK_TRANSITION_H

#include <iostream>
#include "vec.h"
#include "dir.h"
#include "Board.h"

using std::ostream;
using std::endl;

struct Transition
{
    vec fromv;
    dir fromd;
    vec tov;
    dir tod;

    Transition();
    Transition(vec fromv, dir fromd, vec tov, dir tod);

    friend ostream& operator<< (ostream& os, cost Transition& t);
};

Transition swap(Transition& t) const;

#endif// ZOCK_TRANSITION_H

错误消息是:

g++ -std=c++14 -I./inc   -c src/Transition.cpp -o build/debug/Transition.o -g3
In file included from ./inc/Board.h:21:0,
                 from ./inc/Transition.h:19,
                 from src/Transition.cpp:12:
./inc/Map.h:29:9: error: ‘Transition’ was not declared in this scope
  vector<Transition> transitions;

让我们看一下Map.h:

#ifndef ZOCK_MAP_H
#define ZOCK_MAP_H

#include <string>
#include <vector>
#include "Transition.h"

using std::string;
using std::vector;

class Map
{
friend class Board;

private:
    int height, width;
    char ** fields;
    vector<Transition> transitions;

public:
    enum readfrom
    {
        str = 0,
        file ,

        NUM_READFROM //Leave last !
    };

    Map(string i, readfrom p);
};

#endif// ZOCK_MAP_H

它不太可能是编译器或链接器错误,因为似乎每个文件都被正确找到。似乎所有东西都被正确包含在内,所以我处于死胡同。

哪些dows会导致错误或导致错误的常见错误?

0 个答案:

没有答案