从类型到类型&的参数没有已知的转换。

时间:2013-08-12 17:31:53

标签: c++ operator-overloading

我有一个在类's'中重载operator=的函数

ssm& operator=(ssm& rhs);

后来我使用ssm对象(itsSSM)作为另一个类(mt3dset)的成员。我使用以下声明来初始化构造函数中的该成员。

itsSSM= ssm();

但是我收到了一个错误:

  

错误:'((mt3dSet *)this中的'operator ='不匹配 - > mt3dSet :: itsSSM = ssm()'

     

错误:参数1从'ssm'到'ssm&'

没有已知的转换

编译器是否存在问题(g ++ 4.7)? (如果需要,请询问更多信息)

2 个答案:

答案 0 :(得分:6)

不,这对编译器来说不是问题。您不能将临时绑定到非const引用。请注意,Visual C ++具有允许此非标准功能的扩展名。

只需更改您的副本分配以将其参数作为const:

ssm& operator=(const ssm& rhs);

答案 1 :(得分:2)

你应该做那个

ssm& operator=(const ssm& rhs);