1

C++ で特定のクラスを 2 つのサブクラスに継承しようとしています。サブクラスを並べて実行したいのですが、どちらもスーパークラスを継承していますentity.hpp

#include "../entity.hpp"
class Npc : public Entity
{}

#include "../entity.hpp"
class Human : public Entity
{}

もちろん、私がするとき

#include "Npc.hpp"

#include "Human.hpp"

同じファイルにentity.hppが 2 回含まれているため、問題が発生します。どうすればこれを回避できますか?

編集: .cpp ファイルはタイプミスでした。

4

4 に答える 4

6

ヘッダーにインクルードガードを使用するか、#pragma onceディレクティブ(それほど広くサポートされていない)を使用します。

于 2012-11-02T13:16:29.533 に答える
2

でインクルードガードを使用する必要がありますentity.hpp

#ifndef ENTITY_HPP_
#define ENTITY_HPP_

// code

#endif
于 2012-11-02T13:17:07.220 に答える
1

次のようにヘッダーファイルにコードをラップします。

#ifndef ENTITY_HPP
#define ENTITY_HPP

<body of entity.hpp goes here>

#endif
于 2012-11-02T13:17:17.813 に答える
0

「.h」または「.hpp」ファイルのみをインクルードする必要があります。Visual Studioを使用している場合は、次を追加します

#pragma once

各ヘッダーファイルの先頭に。他のコンパイラを使用する場合は、

#ifndef MY_HEADER_FILE_NAME
#define MY_HEADER_FILE_NAME

class Human : public Entity
{}

#endif
于 2012-11-02T13:18:43.817 に答える