我想知道是否有人可以在不进行重组的情况下就解决这种情况的方法提出建议:我有一个包含类声明的标头,并声明了它通过引用/指针使用的许多类,与简单地包含相比,这显然是一种好习惯这些类的标题。
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 for Bar
,是否可以在标头中使用任何技术MyStruct
来保持预先声明的精神Bar
?