我正在尝试使用其构造函数实现一个返回类对象的函数。 该类对象只是带参数的构造函数,并且没有任何默认构造函数(因为我不需要它)。 当我尝试返回该类对象时 - 出现错误..
Base.cpp
Derived Base :: operator +(){ return Derived(* this); //没有用于调用'Derived :: Derived(Derived)'的匹配函数 }
Base.h
虚拟派生运算符+();
Derived.h //构造:
派生(基础& b);
派生(Derived& d);
1。我该怎么做才能解决这个错误?
2。声明(const Derived&)和(Derived&)之间的差异是什么?
由于
答案 0 :(得分:1)
Derived&
不会绑定到临时对象。您的operator+
会返回一个临时的。
解决方案:添加const
,因为const&
将绑定到临时对象。