在编写以下函数
abs
时,我遇到了错误:非成员函数unsigned int abs(const T&)
不能有cv限定符。
template<typename T>
inline unsigned int abs(const T& t) const
{
return t>0?t:-t;
}
在去除函数的const
限定符后,就没有错误了。由于我没有在函数内修改t
,上述代码本应该编译通过。我想知道为什么会出现错误?
int add(const int a, const int b)
,我们不能使用const限定符,因为它不是成员函数。 - Vikram Ojhaconst
(一种是在函数作为类成员时修改this
指针,另一种是修改函数参数)。我认为我的回答和Bo的回答(你提供的那个)都解释了OP遇到问题的原因,只是用不同的措辞表达。顺便说一下,问题中提到的函数名是abs
,只有一个参数,而不是你评论中提到的两个参数的add
函数,所以我不确定这个信息是从哪里得来的。 - Attila