我不喜欢使用前向声明:
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
我怎样才能做到这一点?
答案 0 :(得分:3)
两个步骤。
步骤1:在结构A之前定义结构B
第2步:与向前声明一样。
答案 1 :(得分:0)
双Vigneshwaren评论代码: 模板 结构B { T _t; };
template<typename T>
struct A
{
struct B<T>* _t;
};