对于模板类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");
}