我的情况是有一个类定义,如下所示:
template<class T>
class Alpha< Bravo<T> >
{
....
};
我正在使用gnu g ++进行编译,编译器抱怨Alpha是“不是模板”。
我已经看到了在Bravo编写的库中使用的相同技术,而Bravo是一个模板化的类。我错过了什么吗?我已经将Alpha剥离到骨头并完成测试,没有编译成功。我也尝试从我在Bravo的库中看到的地方复制+粘贴代码,同样的事情,没有成功,同样的错误。
提前致谢。
答案 0 :(得分:6)
你有什么部分模板专业化;但是,任何模板专业化都需要主要模板来专门化, 你没有。
template<class T>
class Alpha;
template<class T>
class Alpha<Bravo<T> >
{
// ...
};
答案 1 :(得分:4)
您需要先声明主模板。你写的是专业。
//primary template - the definition is optional
template<class T>
class Alpha
{
};
//specialization
template<class T>
class Alpha< Bravo<T> >
{
};