缺少" const"导致"错误:没有匹配函数来调用"

时间:2015-12-24 14:38:05

标签: c++

我有一个像这样的类ssyvector:

class ssyvector {
public :
  ssyvector( ssyvector& a);

它有一个构造函数接受对另一个ssyvector的引用。

我进一步定义了一个像这样的运算符

ssyvector operator+(const ssyvector& a,const ssyvector& b)

我尝试将此运算符应用于这样的两个ssyvector:

ssyvector c10000 = s10000+a10000;

然后g ++抱怨说:

main.cpp:31:28: error: no matching function for call to ‘Ssyvector::ssyvector::ssyvector(Ssyvector::ssyvector)’
  ssyvector c10000 = s10000+a10000;
                            ^

我可以通过添加" const"来删除此错误。定义构造函数的关键字,如下所示:

class ssyvector {
public :
  ssyvector( const ssyvector& a);

看起来很混乱,有人可以解释一下吗? 感谢

1 个答案:

答案 0 :(得分:1)

operator+正在返回一个临时对象。您只能对常量对象进行const引用。

你的构造函数也应该使用const引用,因为制作某个东西的副本不应该改变被复制的东西(除非我们进入量子力学......)