Game
クラスにCharacter
オブジェクトを作成する必要があります。両方ともSDL2が含まれています。C++で複数のファイルにまたがるライブラリを含める
Game
クラスはSDL_BlitSurface
とSDL_UpdateWindowSurface
ためにSDLを使用し、Character
クラスがSDL_Surface
のためにSDLを使用しています。
このインクルードに冗長性を避ける方法はありますか?コンパイラにはSDL2が1回だけ含まれますか?
Game
クラスにCharacter
オブジェクトを作成する必要があります。両方ともSDL2が含まれています。C++で複数のファイルにまたがるライブラリを含める
Game
クラスはSDL_BlitSurface
とSDL_UpdateWindowSurface
ためにSDLを使用し、Character
クラスがSDL_Surface
のためにSDLを使用しています。
このインクルードに冗長性を避ける方法はありますか?コンパイラにはSDL2が1回だけ含まれますか?
コンパイラにはSDL2が1回だけ含まれますか?
含まれているヘッダーにガードが含まれている場合は、です。
ヘッダーに定義が含まれている場合、にはにインクルードガードが必要です。そうでない場合は、複数回インクルードするとプログラムが不正になります。
私はSDLのすべてのヘッダを通過しませんでしたが、私はそれらのすべてがインクルードガードを使用していると思います。
Game.hとCharacter.hの両方に "SDL.h"が含まれています。ソースの健康には問題がありますか?
私は何を知りませんソースの健康はです。 Game.h
がSDL.h
の定義/宣言に依存する場合は、SDL.h
を含める必要があります。 Character.h
がSDL.h
の定義/宣言に依存する場合は、SDL.h
も含める必要があります。それには何も問題はありません。それは非常に典型的です。ヘッドファイル内
Game.hとCharacter.hの両方に "SDL.h"を含めました。ソースの健康には問題がありますか? –
@LeonardoPaffiは編集を参照してください。 – user2079303
「ソース健康」に関しては、私は悪い意味ではありません。ご協力いただきありがとうございます。 –
、あなたは以下のコードを追加必要があります。
#ifndef TEST_H
#define TEST_H
// your code
#endif
または
#pragma once
これは、あなたがクラスを複数回を含める回避することができます!
#pragmaプロジェクトのすべてのヘッダーファイルの一番上に、トリックを行う必要があります。 – Amadeusz