.h файл не может видеть другой в той же папке C ++ Eclipse - PullRequest
0 голосов
/ 27 марта 2019

Странная вещь в этой проблеме заключается в том, что другие файлы .cpp и .h могут найти файл, но не этот, все они находятся в той же папке.Моя файловая структура выглядит следующим образом:

/ Entity.h // включается

/ Graphics.cpp // может включать

/ Graphics.h // НЕ МОЖЕТ включать

/ main.cpp // может включать

/ Physics.cpp // может включать

/ Physics.h // может включать

Графика.cpp, main.cpp, Physics.cpp, Physics.h могут включать Entity.h, но Graphics.h не может.

Это Entity.h

#ifndef ENTITY_H
#define ENTITY_H

#include <vector>
#include <SFML/Graphics.hpp>

using namespace std;

struct entity
{
    int ID;
    vector<long double> position;
    vector<long double> velocity;
    vector<long double> acceleration;
    sf::Color colour;
    sf::CircleShape selfImage;
    long double mass;
};

entity createEntity(long double x, long double y, long double xV, long double yV, long double m, int newID)
{
    entity e;
    // assign entity ID and increment entity ID count
    e.ID = newID;

    // initialise velocity, acceleration & position to 0
    e.position.resize(2, 0);
    e.velocity.resize(2, 0);
    e.acceleration.resize(2, 0);

    e.position = {x, y};
    e.velocity = {xV, yV};

    // setup self-image
    e.colour = sf::Color (255, 0, 0);
    e.selfImage.setFillColor(e.colour);

    // initialise mass
    e.mass = m;

    return e;
};


#endif // ENTITY_H

Это Graphics.h

/*
 * Graphics.h
 *
 *  Created on: 26 Mar 2019
 *      Author: chris
 */
#ifndef GRAPHICS_H_
#define GRAPHICS_H_

#include <SFML/Graphics.hpp>
#include <vector>
#include <Entity.h>

class Graphics
{
    public:
        Graphics(int WIDTH, int HEIGHT);
        ~Graphics();
        void update(vector<entity> entities);

        int W_WIDTH;
        int W_HEIGHT;
        sf::RenderWindow window;

};



#endif /* GRAPHICS_H_ */

Physics.h, пример чего-то, что может включать Entity.h

#ifndef PHYSICS_H
#define PHYSICS_H

#include <Entity.h>
#include <vector>
using namespace std;


class Physics
{
    long double G_CONST = 0.00000000006674;
    public:
        Physics();
        virtual ~Physics();

        const int MAP_WIDTH = 1000;
        const int MAP_HEIGHT = 1000;

        vector<vector<entity*>> gameMap;
        vector<entity> entityList;

        void addEntity(entity e);
        int update();

    protected:

    private:
};

#endif // PHYSICS_H

Вывод консоли следующий

make all 
Building file: ../Graphics.cpp
Invoking: Cross G++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"Graphics.d" -MT"Graphics.o" -o "Graphics.o" "../Graphics.cpp"
In file included from ../Graphics.cpp:7:
../Graphics.h:12:10: fatal error: ./Entity.h: No such file or directory
 #include <./Entity.h>
          ^~~~~~~~~~~~
compilation terminated.
make: *** [subdir.mk:26: Graphics.o] Error 1
"make all" terminated with exit code 2. Build might be incomplete.

Я использую Eclipse в Debian.Это меня озадачило, я не вижу разницы в файлах.

РЕДАКТИРОВАТЬ: использование "" вместо <> вокруг имени файла включаемых операторов решило проблему.Однако возникли другие проблемы: (((((((

...