gpt4 book ai didi

c++ - 默认构造函数错误,没有用于调用的匹配函数

转载 作者:行者123 更新时间:2023-12-01 15:12:27 26 4
gpt4 key购买 nike

main()中,我正在创建一个数组myAppointments,并意识到要使其工作,我需要在Appointments.h中创建一个默认构造函数,但是当我这样做时,会出现此错误:

no matching function for call to 'Time::Time()'Appointment(){

Here is Main:

/*
* Homework 4 -- UPDATE as needed
*/

#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>

#include "Appointment.h"
using namespace std;

void callPrint (Time &TimeOrApptObject) { TimeOrApptObject.print(); }

int main(){
int month, day, year, hour, minute,howLong;
Appointment myAppointments[19];

ifstream HW4DataFileHandle;

HW4DataFileHandle.open("Lab6Data.txt");
while (!HW4DataFileHandle.eof( )) {
for (int i = 1; i < 20; i++) {
HW4DataFileHandle>>month;
HW4DataFileHandle>>day;
HW4DataFileHandle>>year;
HW4DataFileHandle>>hour;
HW4DataFileHandle>>minute;
HW4DataFileHandle>>howLong;
myAppointments[i] = Appointment( month, day, year, hour, minute, howLong);
}
cout <<"enter a month" <<endl;
cin >> month;
cout <<"enter a day" <<endl;
cin >> day;
cout <<"enter a year"<<endl;
cin >> year;
Date myDate( month, day, year);

cout <<"Appointments for" << month <<"/" << day <<"/" << year <<":"<< endl;

for (int i = 0; i <13; i++){
if ( myAppointments[i]==Date myDate )
{
Time thisTime = myAppointments[i];
thisDate.print();
cout << endl;
}
}
}
这是头文件:
日期
// Date.h -- Class Date    UPDATE  as needed
#ifndef DATE_H
#define DATE_H

class Date {
private:
int month;
int day;
int year;
public:
Date(int m, int d, int y) : month(m), day(d), year(y)
{
}

friend bool friendTorCompare2Dates (const Date&,const Date& );
};

bool friendTorCompare2Dates (const Date& Right, const Date& Left)
{
if (Right.month == Left.month && Right.day == Left.day )
return true;
else
return false;
}

#endif
时间
//Time.h -- Class Time UPDATE  as needed
using namespace std;
#include<iostream>
#ifndef TIME_H
#define TIME_H

class Time {
private :
int hour; int minute;
public:
Time(int h, int m) : hour(h)
{
}
virtual void print() {
cout << hour << " " << minute <<" " ;
}
};

#endif
预约时间
// Appointment.h -- Class Appointment   UPDATE as needed
//

using namespace std;
#include "Time.h"
#include "Date.h"
#ifndef APPOINTMENT_H
#define APPOINTMENT_H

class Appointment: public Date, public Time {
private:
int howLong;
public:
Appointment(int month, int day, int year, int hour, int minute, int howLong) :
Date(month, day, year), Time(hour, minute), howLong(howLong)
{
}

Appointment(){
month;
day;
year;
hour;
minute;
howLong;
}
};

#endif
为了使 Appointment中的默认构造函数正常工作,我需要更改什么?如果您发现其他任何问题,或者对我的问题有任何其他疑问,请告诉我。如果您在回答中加入一个例子,我将不胜感激。

最佳答案

这行:

Appointment  myAppointments[19];
将为每个元素调用 Appointment的默认构造函数。
您的默认构造函数不会显式调用 Time的构造函数,因此将调用 Time的默认构造函数,该构造函数不存在。与 Date相同。
您可以像这样恢复默认构造函数:
class Time {
// ...
public:
Time() = default;
};
为了获得合理的默认行为,您应该为类的成员提供默认的初始值,例如
class Time {
private :
int hour = 0;
int minute = 0;
public:
// ...
};

关于c++ - 默认构造函数错误,没有用于调用的匹配函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63292077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com