5

operator=我有一个在类“ssm”中重载的函数

ssm& operator=(ssm& rhs);

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

itsSSM= ssm();

但我收到一个错误:

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

错误:没有已知的参数 1 从“ssm”到“ssm&”的转换</p>

编译器(g++ 4.7)有问题吗?(如果需要,请询问更多信息)

4

2 回答 2

6

不,这不是编译器的问题。您不能将临时对象绑定到非常量引用。请注意,Visual C++ 有一个扩展来允许这种非标准功能。

只需更改您的复制分配者以将其参数作为 const:

ssm& operator=(const ssm& rhs);

于 2013-08-12T17:35:06.230 回答
2

你应该这样做

ssm& operator=(const ssm& rhs);
于 2013-08-12T17:35:02.810 回答