【发布时间】:2012-10-15 21:30:45
【问题描述】:
问题是 A 类依赖于 B 类,反之亦然。编译器会抱怨未知类型。通常的解决方案是前向声明类。但是如何声明模板类呢?
【问题讨论】:
标签: c++ templates dependencies forward-declaration
问题是 A 类依赖于 B 类,反之亦然。编译器会抱怨未知类型。通常的解决方案是前向声明类。但是如何声明模板类呢?
【问题讨论】:
标签: c++ templates dependencies forward-declaration
我花了一段时间才找到解决方案,所以我想我可以通过在此处发布“模板”来让别人的生活更轻松。
// Header A.h
template<class z, class w = float>
class B;
template<class x, class y = double>
class A
{
B mb;
}
// Header B.h
template<class x, class y = double>
class A;
template<class z, class w = float>
class B
{
A mA;
}
此外,您还可以更改模板声明中的可选参数。
【讨论】:
A<something, something>*。模板名称本身不是类型。此外,以下划线、两个下划线或一个下划线和一个大写字母开头的标识符被标准保留给编译器/库实现。