我知道在C ++中无法向前声明typedef,但我想知道对于以下问题可能是最佳解决方案。我有一个头文件,声明MyClass
像这样:
#include <TemplateClassHeaders>
struct MyStruct
{
// ...
}
typedef Really::Long::TemplateClassName<MyStruct> MyClass;
MyClass
在许多地方使用,但大部分只是作为指针通过Qt信号槽机制。前转声明将是所有需要的,但由于MyClass
是一个不起作用的typedef。有没有办法避免将myclass.h添加到每个使用指针MyClass
的标头?
答案 0 :(得分:10)
您无法转发声明typedef。但是如果你向前声明它所依赖的类,TemplateClassName
和MyStruct
,你应该能够定义MyClass
。
namespace Really {
namespace Long {
template <typename>
class TemplateClassName;
}
}
class MyStruct;
typedef Really::Long::TemplateClassName<MyStruct> MyClass;
MyClass *p = 0;