如何解决嵌套在模板类定义中的C ++模板类型
| 我有一个类定义如下所示的情况:template<class T>
class Alpha< Bravo<T> >
{
....
};
我正在使用gnu g ++进行编译,编译器抱怨Alpha是“不是模板”。
我已经看到了与Bravo编写的库中使用的相同技术,并且Bravo是模板化类。我想念什么吗?我已经将Alpha剥离了下来,并进行了测试,但没有成功编译。我还尝试从在Bravo的库中看到此代码的地方复制+粘贴代码,同样的事情,没有成功,同样的错误。
提前致谢。
解决方法
您所拥有的只是部分模板专业化;但是,任何模板专业化都需要主模板进行专业化,而您却没有。
template<class T>
class Alpha;
template<class T>
class Alpha<Bravo<T> >
{
// ...
};
, 您需要首先声明一个主模板。您写的是专业。
//primary template - the definition is optional
template<class T>
class Alpha
{
};
//specialization
template<class T>
class Alpha< Bravo<T> >
{
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。