この状況を回避する方法について、再構築せずに誰かが提案を提供できるかどうか疑問に思いました。クラス宣言を含み、参照/ポインターによって使用するクラスの数を宣言するヘッダーがあります。これは、単に含めるよりも明らかに良い習慣です。それらのクラスのヘッダー。
struct Foo;
struct Bar;
struct MyStruct
{
void doIt( const Foo* foo );
void doIt( const Bar* bar );
};
ただし、上記の例ではFooはクラスですが、Barは実際には、以下の大まかな例のようにクラスのtypedefです。
#include <fd_ex.h>
struct Foo
{
int a;
};
struct Bar_
{
int a;
};
typedef Bar_ Bar;
struct Bar
事前宣言が明らかに正しくないため、これによりいくつかの問題が発生します-Bar
構造体ではありません:
"fd_ex.cpp", line 13: Error: Multiple declaration for Bar.
"fd_ex.cpp", line 19: Error: The name Bar is ambiguous, Bar and Bar.
2 Error(s) detected.
Bar_
主に、実際にはこの例よりもはるかに複雑になる可能性があるため、可能であれば公開したくありません。
ただし、のstruct宣言とtypedefを制御できない場合、事前宣言の精神を維持するためにBar
ヘッダーで使用できる手法はありますか?MyStruct
Bar