使用g++编译C++.11时出错,不会命名类型



我很难在c++.11 上编译g++

这是我面临的问题:

error: 'IGameController' does not name a type.

IGameController实际上是我的class接口,我已将位置放在g++脚本上。

这是我要编译的g++脚本:

cd C:MinGWbin
g++ -std=c++11 -c c:UsersmeDownloadsTheGameTheGame.cpp 
g++ -std=c++11 -Ic:UsersmeDownloadsTheGameGameControllerinc -Ic:UsersmeDownloadsTheGameGameControllersrc -c c:UsersmeDownloadsTheGameGameControllersrcGameController.cpp 
g++ -std=c++11 -o c:UsersmeDownloadsTheGameTheGame.exe *.o

我不明白为什么脚本找不到我的头文件

我的项目结构如下:

TheGameTheGame.cpp
TheGameGameControllerincGameControllerProvider.hpp
TheGameGameControllerincIGameController.hpp
TheGameGameControllersrcGameController.cpp
TheGameGameControllersrcGameController.hpp

这是我的源代码:

[TeGame.cpp]

#include <iostream>
#include "GameController/inc/GameControllerProvider.hpp"
#include "GameController/inc/IGameController.hpp"
int main()
{
    GameController::IGameController& gameController = GameController::GameControllerProvider::getGameController();  
    gameController.printSomething();
    return 0;
}

[INameController.hp]

#pragma once
namespace GameController
{
class IGameController
{
public:
    virtual void printSomething() = 0;
protected:
   IGameController() {}
   virtual ~IGameController() {}
};
}

[GameControllerProvider.hp]

#pragma once
namespace GameController { class IGameController; }
namespace GameController
{
    namespace GameControllerProvider
    {
       IGameController& getGameController();
    }
}

[GameController.hp]

#pragma once
#include "GameController/inc/IGameController.hpp"
namespace GameController
{
class GameController : public IGameController
{
public:
    GameController();
    virtual ~GameController();
    void printSomething() override;
private:
};
}

[GameController.cpp]

#include <iostream>
#include "GameController/inc/IGameController.hpp"
#include "GameController/src/GameController.hpp"
#include "GameController/inc/GameControllerProvider.hpp"
namespace GameController
{
GameController::GameController() {}
GameController::~GameController(){}
void GameController::printSomething()
{
    std::cout << "printSomething()" << std::endl;
}
}
// Provider 
IGameController& GameControllerProvider::getGameController()
{
   static GameController sGameController;
   return sGameController;
}
}

我不熟悉名称空间,但可以肯定的是,您的问题之一是#include语句,其中您为某些文件提供了错误的路径。

例如,当您从GameController.cpp(在src/中)调用IGameController.hpp(在inc/中)时,由于您使用的是quations标记(" "),因此您应该给出文件的完整路径,并且应该将其写成:

#include "../inc/IGameController.hpp"

希望能有所帮助。

最新更新