jah*_*aho 8 c++ templates typedef forward-declaration
我知道typedef不能在C++中进行前向声明,但我想知道什么是以下问题的最佳解决方案.我有一个头文件,声明MyClass如下:
#include <TemplateClassHeaders>
struct MyStruct
{
// ...
}
typedef Really::Long::TemplateClassName<MyStruct> MyClass;
Run Code Online (Sandbox Code Playgroud)
MyClass在许多地方使用,但大部分只是作为指针通过Qt信号槽机制.前向声明将是所有需要的,但因为MyClass是一个不起作用的typedef.有没有办法避免将myclass.h添加到使用指针的每个标头MyClass?
小智 10
您无法转发声明typedef.但是,如果你向前声明的类它依靠,无论是TemplateClassName和MyStruct,你应该能够确定MyClass.
namespace Really {
namespace Long {
template <typename>
class TemplateClassName;
}
}
class MyStruct;
typedef Really::Long::TemplateClassName<MyStruct> MyClass;
MyClass *p = 0;
Run Code Online (Sandbox Code Playgroud)