[英]C++ Error : No Matching Function for Call to “ ”
我是社区的新手。收到此错误时,正在使用“ +”运算符练习运算符重载。
C:\Users\User\Documents\Saahil\h23.cpp In member function 'Time
Time::operator+(const Time&)':
10 8 C:\Users\User\Documents\Saahil\h23.cpp [Error] no matching function
for call to 'Time::Time()'
10 8 C:\Users\User\Documents\Saahil\h23.cpp [Note] candidates are:
8 2 C:\Users\User\Documents\Saahil\h23.cpp [Note] Time::Time(int, int)
8 2 C:\Users\User\Documents\Saahil\h23.cpp [Note] candidate expects 2
arguments, 0 provided
4 7 C:\Users\User\Documents\Saahil\h23.cpp [Note] Time::Time(const
Time&)
4 7 C:\Users\User\Documents\Saahil\h23.cpp [Note] candidate expects 1
argument, 0 provided
码:
#include<iostream>
using namespace std;
class Time{
public:
int min;
int s;
Time(int min, int s){ this->min=min;this->s = s; }
Time operator +(Time const &obj){
Time total_time;
total_time.min = min + obj.min;
total_time.s = s+ obj.s;
return total_time;
}
void print(){ cout<<"The time now is : "<<min<<":"<<s; }
};
/*Constructor*/
int main()
{
//cout<<"Enter the time intervals to be added : "<<endl; cin>>min1>>s1;
//cout<<"Enter second time interval : "; cin>>min2>>s2;
//Time t1(min1,s1) , t2(min2,s2);
Time t1(11 ,23), t2(23,29);
Time t3 = t1+t2;
t3.print();
}
我曾尝试删除此关键字,但这似乎只会加剧问题。 请帮忙!
在操作员功能中,您可以
Time total_time;
定义一个新的Time
对象并默认构造它。 但是您没有Time
默认构造函数,因此编译器对此表示抱怨。
解决方案是使用已有的参数化构造函数,或者创建默认构造函数。
线
Time total_time;
是不正确的。 您没有默认的构造函数。
一种解决方案:
Time operator +(Time const &obj)
{
return Time(this->min + obj.min, this->s + obj.s);
}
您还应该使成员函数成为const
成员函数。
Time operator +(Time const &obj) const
{
return Time(this->min + obj.min, this->s + obj.s);
}
那将允许您使用:
Time t1(11, 23);
Time t2(23, 29);
Time t3(5, 8);
Time t4 = t1 + t2 + t3;
您的运算符+
试图默认构造一个Time
,但是它没有默认构造函数。
改为这样做(并在使用时添加const
):
Time operator +(Time const &obj) const {
return Time(min + obj.min, s + obj.s);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.