我想要一个具有两个同名方法的模板类:一个采用 T& 类型的参数,另一个采用 Rational& 作为参数,其中 Rational 是我的类。我不确定这是否称为模板专业化或只是简单的重载另一件事是我没有 h 和 cpp 文件,而是一个包含实现声明的 hpp 文件。
什么是正确的sytanx?
像这样的东西:
template <class T> class Matrix
{
bool hasTrace (Rational& trace) const
{
}
bool hasTrace (T& trace) const
{
}
}
只有这段代码没有编译,我得到编译错误:
..\/Matrix.hpp:200:7: error: 'bool Matrix<T>::hasTrace(T&) const [with T = Rational]' cannot be overloaded
..\/Matrix.hpp:180:7: error: with 'bool Matrix<T>::hasTrace(Rational&) const [with T = Rational]'
我现在看了这个教程: 在此处输入链接描述
在模板专业化下,它说我想要完成的事情可以通过在类定义之外定义专门的函数来完成,同时用我希望重新定义函数的特定类型替换模板类型:
bool Matrix<Rational>::hasTrace (Rational& trace) const
{
}
但现在我得到这个错误:
..\/Matrix.hpp:227:6: error: specializing member 'Matrix<Rational>::hasTrace' requires 'template<>' syntax
再次感谢