对于我的家庭作业,我必须创建一个链表并且它必须是一个模板类。分配需要一个名为 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;
}
我的主要问题是,因为嵌套类将是同一类型,正如您从语句 A<int>::B<int> b;
中看到的那样,有没有办法让 B 类自动与 A 属于同一类型?我的问题有道理吗?换句话说,我可以做A<int>::B b;
吗?和 b 自动与 A 相同的类型?永远不会有我会 A<double>::B<int>;
的情况例如。
最佳答案
是的,只需要B
不是模板。 T1
在 B
的定义仍然引用 A
的模板参数.
template <class T1>
class A
{
public:
class B;
T1 _a;
}
现在,而不是 A<int>::B<int>
, 就是 A<int>::B
.
List<int>::Link<double>
无论如何都没有意义,所以作为模板没有意义。
关于c++ - 如何设计嵌套类是同一类型的嵌套模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10250023/