如何设计嵌套类具有相同类型的嵌套模板类

6 c++ templates class

对于我的家庭作业,我必须创建一个链表,它必须是一个模板类.赋值调用一个名为List的模板类和另一个名为Link的嵌套模板类.

应该在类定义之外定义方法.

我首先创建了一个简单版本的作业并且它正在工作,但我觉得我的设计中存在错误.

#include <iostream>
using namespace std;

template <class T1>
class A
{
public:
  template <class T2>
  class B;

  T1    _a;
};

template <class T1>
template <class T2>
class A<T1>::B
{
public:
  T2 _b;
};

int main()
{
  A<int> a;
  a._a = 5;

  A<int>::B<int> b;
  b._b = 10;

  cout << a._a << " " << b._b << "\n";


  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的主要问题是,由于嵌套类的类型相同,正如您从语句中看到的那样A<int>::B<int> b;,有没有办法让类B自动与A类型相同?我的问题是否有意义?换句话说,我可以A<int>::B b;自动执行与A相同的类型吗?A<double>::B<int>;例如,我永远不会有这样的情况.

R. *_*des 6

是的,只是B不要模板.T1in B的定义仍然指的是模板参数A.

template <class T1>
class A
{
public:
  class B;

  T1    _a;
}
Run Code Online (Sandbox Code Playgroud)

现在,而不是A<int>::B<int>,它只是A<int>::B.

List<int>::Link<double> 无论如何都没有意义,所以它不是一个模板.