模板的前向声明

时间:2013-01-27 10:10:19

标签: c++ templates

我不喜欢使用前向声明:

struct A;

struct B
{
   A* a;
}

// Implementation

我习惯做类似的事情:

struct B
{
   struct A* a;
}

但是,当我尝试使用模板类时,我遇到了问题:

template<typename T>
struct A
{
    struct B<T>* _t;
};

template<typename T>
struct B
{
    T _t;
};

编译器说我:

test.cpp:4:12: error: 'B' is not a template
test.cpp:8:8: error: 'B' is not a template type

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:3)

两个步骤。

步骤1:在结构A之前定义结构B

第2步:与向前声明一样。

答案 1 :(得分:0)

双Vigneshwaren评论代码:     模板     结构B     {         T _t;     };

template<typename T>
struct A
{
    struct B<T>* _t;
};