【发布时间】:2017-06-14 12:02:04
【问题描述】:
假设我有 2 个模板类,每个都有一个指向另一个的指针;
template <typename T>
class A;
template <typename T>
class B;
template <typename T>
class A
{
B<A>* p;
};
template <typename T>
class B
{
A<B>* p;
};
我现在如何实例化这些类?我不能简单地运行A<B>,因为B 不是类型(它是模板类型)。
A 和 B 的实例在不同的线程中运行,并带有相当多的状态和功能,因此从彼此继承它们并在每个类中复制它们的功能是不可行的选择。
我怎样才能解决这个问题并让这些类型相互持有指针/引用?
【问题讨论】:
-
我不明白这个问题。
A<int> x工作正常。 -
我真的很好奇在什么情况下这样的设计是可取的
-
注意你已经注入了名字,所以你的成员实际上是
B<A<T>>* p;和A<B<T>>* p; -
据观察,“模板类”是一个坏名字,准确地说,因为它会引起这样的误解。
A和B是类模板。这意味着它们是可以实例化以创建类的模板,但它们本身不是类。A<int>就是这样一个类模板的实例化,因此是一个类。 -
@user1620443 我认为这样的设计是不言而喻的,它只是一系列不幸事件的结果。
标签: c++