2016-04-18 2 views
0

に名前を付けていないエラーで++グラムを使用して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; 
} 

} 

答えて

1

私は名前空間に慣れていないんだけど、確かにあなたの問題の一つは、あなたがに間違ったパスを与える#include文ですいくつかのファイル。あなたはquoationsマーク(" ")を使用しているので、(SRC /に)、あなたはファイルへのフルパスを与える必要があり、それはのように記述しなければならないGameController.cppから(/ INCで)IGameController.hppを呼び出す例えば

、 :

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

希望します。

+0

こんにちはユージン。それは問題ではありませんが、あなたが正しいです、インクルードは間違っていました。コンパイルエラーは残っています:( – waas1919

+0

私はちょうど推測していますが、問題は 'GameController.cpp'の' IGameController&GameControllerProvider :: getGameController() '定義が名前空間から外れていることです。ファイルの末尾に名前空間を閉じますか? – EuGENE

+0

実際にあなたは正しいです:)問題は私が間違った#includeを使っていたことでした。私は毎回フルパスを入れなければならないと思った。しかし、既にフォルダ内にあるインクルードの場合、それは単に相対パスに過ぎません。あなたの答えを正しいものにします! – waas1919

関連する問題