私はこのファイルlogger.hppを持っています。 logger.hppにはevent.hppが含まれ、event.hppにはlogger.hppが含まれています。C++巡回包含問題
logger.hppにoperatorを定義する必要があるため、event.hppを含める必要があります。
イベントevent.hppにクラスイベントで定義される友人関係があるため、logger.hppをインクルードする必要があります。
まあこれは、当然のことながら、巡回再帰です。
私はこの試みた:logger.hppで)
1:
#ifndef _LOGGER_HPP_
#define _LOGGER_HPP_
#include "event.hpp"
class Event; // Forward decl
// Class definitions
...
は動作しません。
ISO C++が無いタイプで 「ロガー」の宣言を禁じ
コンパイラ:コンパイラが(と、彼は右のコースです)event.hppでロガーと呼ばれていない認識のタイプがあることを私に伝えます友情宣言がある行(event.hpp内)を示しています。 event.hppで
2):
#ifndef _EVENT_HPP_
#define _EVENT_HPP_
#include <string>
#include "logger.hpp"
class Logger; // Forward decl
// Class definitions
...
は動作しません。コンパイラはlogger.hppにイベントと呼ば認識されていないタイプがある(そして、再び、それは明白な理由のために右である)があることを私に伝えます:
と「イベント」 の宣言を禁止しますISO C++が無いタイプ
コンパイラは、オペレータ宣言がある行(logger.hpp内)を示します。
まあ...これに対処する方法がわからないのですか?私はすべてを試しましたが、どこにでも宣言をしましたが、もちろん彼らは何の助けもしていません。 これを解決するにはどうすればいいですか? (私はベストプラクティスが存在すると思います、それは私がそう望みます:))。
ありがとうございます。
あなたのヘッダーガード識別子なし
のようにそれを行うには、それらを変更、使用しても大丈夫ではありません。 http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-a-c-identifier – GManNickG