对于模板类A,如果模板类B把A作为成员,则模板在定义模板B之前,只需声明模板B就可以,不必给出B的定义,只要在实例化B的之
前,给出A的定义就可以了。
这点很像依赖于模板的函数解析。例如:
#include
<
iostream
>
using namespace std;
template < class T >
class A;
template < class T >
class B
{
A < T > a;
};
template < class T >
class A
{}; // 必须给出定义
int main()
{
B < int > b;
system( " pause " );
}
using namespace std;
template < class T >
class A;
template < class T >
class B
{
A < T > a;
};
template < class T >
class A
{}; // 必须给出定义
int main()
{
B < int > b;
system( " pause " );
}