C++ 模板的转发声明
我不喜欢使用转发声明,因为:C++ 模板的转发声明,c++,templates,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; }; 如何
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;
};
如何实现这一点?分两步
步骤1:在结构A之前定义结构B
步骤2:像转发声明一样。两个步骤
步骤1:在结构A之前定义结构B
第2步:像转发声明一样。用代码进行双Vigneshwaren注释: 模板 结构B { T_T,; };
模板
结构A
{
结构B*\u t;
};
带代码的双Vigneshwaren注释:
模板
结构B
{
T_T,;
};
模板
结构A
{
结构B*\u t;
};
真正的问题是:为什么不喜欢转发声明?他们是这样说的:“这是一个有效的类型,即使你还没有看到定义”。为什么要避免使用它们?真正的问题是:为什么不喜欢转发声明?他们是这样说的:“这是一个有效的类型,即使你还没有看到定义”。为什么要避免使用它们?
test.cpp:4:12: error: 'B' is not a template
test.cpp:8:8: error: 'B' is not a template type
template<typename T>
struct A
{
struct B<T>* _t;
};