0

我不喜欢使用前向声明:

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

我怎样才能做到这一点?

4

2 回答 2

3

两步。

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

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

于 2013-01-27T10:46:44.397 回答
0

带有代码的双 Vigneshwaren 注释:模板结构 B { T _t; };

template<typename T>
struct A
{
    struct B<T>* _t;
};
于 2013-01-27T12:43:35.120 回答