私はパケットクラスとpacketfactoryクラスを持っています。ヘッダファイルを含めるには
パケットファクトリクラスにはpacket.hファイルが含まれ、パケットクラスにはpacketfacotry.hファイルが含まれます。
次に、packetfactory.hファイルに「パケットはタイプを指定しません」というエラーが表示されます。
これを修正するにはどうすればよいですか?
ありがとうございます。
私はパケットクラスとpacketfactoryクラスを持っています。ヘッダファイルを含めるには
パケットファクトリクラスにはpacket.hファイルが含まれ、パケットクラスにはpacketfacotry.hファイルが含まれます。
次に、packetfactory.hファイルに「パケットはタイプを指定しません」というエラーが表示されます。
これを修正するにはどうすればよいですか?
ありがとうございます。
2つの方法:
まず、することができますpacketfacotryで#include "packet.h"
と#include "packetfacotry.h"
。あなたのヘッダーを守ることを忘れないでください。
第二には、あなたが円形インクルージョンを持っている場合ジュストあなたの「packetfacotry.hでclass packet;
を追加します。その逆のファイルまたは。 それはプリプロセッサのシンボルを宣言します。
そう?
非常に一般的な循環依存性問題のように見えますが、循環依存性とpImplを検索すると、非常に良い答えがあります。
packetfactory.hがpacket.hに記述されているパケットクラスを参照する場合は、packetfactory.h自体にpacket.hを早期にインクルードする必要があります。ヘッダーには他のヘッダーも含めることができます。
残念ながら、これはソースコードや正確なエラーを提供していないため、何が起こっているのか分かりません。私はこれが問題だと仮定していますが、エラー行は実装ファイルではなくヘッダーにあるためです。
は私たちに削ぎ落としたバージョンを表示しますできるだけ多くのファイルを手に入れることができます。私は多くのC++についてはわかりませんが、フォワードクラス宣言が必要な場合があります。 – cnicutar