我正在为g++编译在c++.11上挣扎
以下是我面临的问题:
error: 'IGameController' does not name a type.IGameController实际上是我的class接口,我已经将位置放在了g++脚本上。
这里是我要编译的g++脚本:
cd C:\MinGW\bin\
g++ -std=c++11 -c c:\Users\me\Downloads\TheGame\TheGame.cpp
g++ -std=c++11 -Ic:\Users\me\Downloads\TheGame\GameController\inc -Ic:\Users\me\Downloads\TheGame\GameController\src -c c:\Users\me\Downloads\TheGame\GameController\src\GameController.cpp
g++ -std=c++11 -o c:\Users\me\Downloads\TheGame\TheGame.exe *.o我不明白为什么脚本找不到我的头文件.
我的项目结构如下:
TheGame\TheGame.cpp
TheGame\GameController\inc\GameControllerProvider.hpp
TheGame\GameController\inc\IGameController.hpp
TheGame\GameController\src\GameController.cpp
TheGame\GameController\src\GameController.hpp这是我的源代码:
TheGame.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;
}IGameController.hpp
#pragma once
namespace GameController
{
class IGameController
{
public:
virtual void printSomething() = 0;
protected:
IGameController() {}
virtual ~IGameController() {}
};
}GameControllerProvider.hpp
#pragma once
namespace GameController { class IGameController; }
namespace GameController
{
namespace GameControllerProvider
{
IGameController& getGameController();
}
}GameController.hpp
#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;
}
}发布于 2016-04-18 13:53:52
我不熟悉名称空间,但您肯定有一个问题是使用#include语句,在这些语句中,您给出了一些文件的错误路径。
例如,当您从IGameController.hpp ( inc/) (在src/中)调用GameController.cpp (inc/)时,由于您使用的是商标记(" "),您应该给出文件的完整路径,它应该写成:
#include "../inc/IGameController.hpp"希望能帮上忙。
https://stackoverflow.com/questions/36695554
复制相似问题