在我的.h我有
const CResultats & operator = (const CResultats & desResultats);
当我写这篇文章时:
CResultats CResultats :: operator = (const CResultats & desResultats) const
{
}
为什么不起作用? 我是c ++的新手...对不起,如果它是愚蠢的。
答案 0 :(得分:1)
将运算符声明为
CResultats & operator = (const CResultats & desResultats);
并将其定义为
CResultats & CResultats :: operator = (const CResultats & desResultats)
{
}
您可以将操作符声明(并定义)为
const CResultats & operator = (const CResultats & desResultats);
但从语义上讲,这是一个无效的声明。
答案 1 :(得分:1)
此:
const CResultats & operator = (const CResultats & desResultats);
是一个函数的声明,它通过const-reference获取CResultats
,并通过const-reference返回CRFesultats
。该方法本身不是const
。
但是这个:
CResultats CResultats :: operator = (const CResultats & desResultats) const
是const
函数的函数定义,它通过const-reference获取CResultats
,并返回CResultats
个值。
这有两种不同的方式:
如果要定义与声明匹配,则必须将定义更改为:
const CResultats & CResultats::operator = (const CResultats & desResultats)
{
// ...
}
答案 2 :(得分:0)
当你写这个"时,它不是"有效"因为它不符合签名;它与编译器不同
最后有const
的成员运算符(函数)在const
个对象上运行,就这么简单。在这种情况下,它没有任何意义,因为此运算符的唯一合理操作是修改对象。