我有一个类定义如下所示的情况:

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> >
{
    // ...
};

关于嵌套在模板类定义中的 C++ 模板类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6348537/

10-11 22:47
查看更多