に名前を付けていないエラーで++グラムを使用して11、私が直面してる問題ですclass
インターフェイス。ここで私のg++
スクリプトに場所を入れました。コンパイルC++、私はここで</p> <p><code>c++.11</code>上<code>g++</code>コンパイルに苦しんだタイプ
私のプロジェクトでは、このように構成されている...スクリプトは私のヘッダファイルが見つからない理由
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
が、私は理解していない。ここで
コンパイルするために私のg++
スクリプトです:ここでは
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;
}
}
こんにちはユージン。それは問題ではありませんが、あなたが正しいです、インクルードは間違っていました。コンパイルエラーは残っています:( – waas1919
私はちょうど推測していますが、問題は 'GameController.cpp'の' IGameController&GameControllerProvider :: getGameController() '定義が名前空間から外れていることです。ファイルの末尾に名前空間を閉じますか? – EuGENE
実際にあなたは正しいです:)問題は私が間違った#includeを使っていたことでした。私は毎回フルパスを入れなければならないと思った。しかし、既にフォルダ内にあるインクルードの場合、それは単に相対パスに過ぎません。あなたの答えを正しいものにします! – waas1919