C++ 如何设计嵌套类类型相同的嵌套模板类

C++ 如何设计嵌套类类型相同的嵌套模板类,c++,class,templates,C++,Class,Templates,对于我的家庭作业,我必须创建一个链表,它必须是一个模板类。分配调用一个名为List的模板类和另一个名为Link的嵌套模板类 这些方法应该在类定义之外定义 我首先创建了一个简单版本的作业,它正在工作,但我觉得我的设计有一个错误 #include <iostream> using namespace std; template <class T1> class A { public: template <class T2> class B; T1

对于我的家庭作业,我必须创建一个链表,它必须是一个模板类。分配调用一个名为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;
}
#包括
使用名称空间std;
模板
甲级
{
公众:
模板
乙级;;
T1_a;
};
模板
模板
A类::B类
{
公众:
T2_b;
};
int main()
{
A A;
a、 _a=5;
A::B;
b、 _b=10;

cout是的,只需使
B
不是模板。
B
中的
T1
的定义仍然引用
a
的模板参数

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

  T1    _a;
}
模板
甲级
{
公众:
乙级;;
T1_a;
}
现在,它不是
A::B
,而是
A::B


List::Link
无论如何都没有意义,所以作为一个模板毫无意义。

我不明白你为什么认为你的内部类需要一个模板。你是否尝试过将其声明为非模板类?例如

template <class T1>
class A
{
public:
  class B;
private:    
  T1    _a;
};

template <class T1>
class A<T1>::B
{
  T1 _b;
};
模板
甲级
{
公众:
乙级;;
私人:
T1_a;
};
模板
A类::B类
{
T1_b;
};

(另外,虽然我意识到这只是一个例子,但我还是建议不要用public数据成员编写课程)

好的,我想那会管用的,我的语法一定有问题,因为我不断出错。我会再试一次。我认为没有必要,我只是犯了语法错误,因为我无法编译程序。我可以从您的示例代码中修复它。谢谢!