转发为模板类声明typedef

时间:2014-05-10 20:31:57

标签: c++ templates typedef forward-declaration

我知道在C ++中无法向前声明typedef,但我想知道对于以下问题可能是最佳解决方案。我有一个头文件,声明MyClass像这样:

#include <TemplateClassHeaders>

struct MyStruct
{
    // ...
}

typedef Really::Long::TemplateClassName<MyStruct> MyClass;

MyClass在许多地方使用,但大部分只是作为指针通过Qt信号槽机制。前转声明将是所有需要的,但由于MyClass是一个不起作用的typedef。有没有办法避免将myclass.h添加到每个使用指针MyClass的标头?

1 个答案:

答案 0 :(得分:10)

您无法转发声明typedef。但是如果你向前声明它所依赖的类,TemplateClassNameMyStruct,你应该能够定义MyClass

namespace Really {
  namespace Long {
    template <typename>
    class TemplateClassName;
  }
}

class MyStruct;

typedef Really::Long::TemplateClassName<MyStruct> MyClass;

MyClass *p = 0;