2016-08-17 4 views
0

GameクラスにCharacterオブジェクトを作成する必要があります。両方ともSDL2が含まれています。C++で複数のファイルにまたがるライブラリを含める

GameクラスはSDL_BlitSurfaceSDL_UpdateWindowSurfaceためにSDLを使用し、CharacterクラスがSDL_SurfaceのためにSDLを使用しています。

このインクルードに冗長性を避ける方法はありますか?コンパイラにはSDL2が1回だけ含まれますか?

+0

#pragmaプロジェクトのすべてのヘッダーファイルの一番上に、トリックを行う必要があります。 – Amadeusz

答えて

0

コンパイラにはSDL2が1回だけ含まれますか?

含まれているヘッダーにガードが含まれている場合は、です。

ヘッダーに定義が含まれている場合、にはにインクルードガードが必要です。そうでない場合は、複数回インクルードするとプログラムが不正になります。

私はSDLのすべてのヘッダを通過しませんでしたが、私はそれらのすべてがインクルードガードを使用していると思います。

Game.hとCharacter.hの両方に "SDL.h"が含まれています。ソースの健康には問題がありますか?

私は何を知りませんソースの健康はです。 Game.hSDL.hの定義/宣言に依存する場合は、SDL.hを含める必要があります。 Character.hSDL.hの定義/宣言に依存する場合は、SDL.hも含める必要があります。それには何も問題はありません。それは非常に典型的です。ヘッドファイル内

+0

Game.hとCharacter.hの両方に "SDL.h"を含めました。ソースの健康には問題がありますか? –

+0

@LeonardoPaffiは編集を参照してください。 – user2079303

+0

「ソース健康」に関しては、私は悪い意味ではありません。ご協力いただきありがとうございます。 –

0

、あなたは以下のコードを追加必要があります。

#ifndef TEST_H 
#define TEST_H 
// your code 
#endif 

または

#pragma once 

これは、あなたがクラスを複数回を含める回避することができます!

関連する問題