c ++错误:没有匹配功能

时间:2015-01-15 08:43:24

标签: c++ inheritance compiler-errors

我正在尝试使用其构造函数实现一个返回类对象的函数。 该类对象只是带参数的构造函数,并且没有任何默认构造函数(因为我不需要它)。 当我尝试返回该类对象时 - 出现错误..

Base.cpp

Derived Base :: operator +(){     return Derived(* this); //没有用于调用'Derived :: Derived(Derived)'的匹配函数 }

Base.h

虚拟派生运算符+();

Derived.h //构造:

派生(基础& b);

派生(Derived& d);

1。我该怎么做才能解决这个错误?

2。声明(const Derived&)和(Derived&)之间的差异是什么?

由于

1 个答案:

答案 0 :(得分:1)

Derived&不会绑定到临时对象。您的operator+会返回一个临时的。

解决方案:添加const,因为const&将绑定到临时对象。