微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

嵌套在模板类定义中的C ++模板类型

如何解决嵌套在模板类定义中的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 举报,一经查实,本站将立刻删除。