C++ 类的构造后出现no matching function for call to,怎样解决?

2024-12-01 22:41:38
推荐回答(4个)
回答1:

没有给time1编写默认构造函数,在类的定义里加一句time1():hour(0),minute(0),second(0){}

int main()

{

time1 t1; //并没有在类中添加基础的构造函数,这一行可以改成time1 t1(time_t对象)

cout << t1.printfUniversal();

cout << "\nHello world!" << endl;

return 0;

}

//

class time1

{

public:

time1(); //加一行 然后再Cpp中写实现

time1( time_t);

void setTime(int ,int ,int );

void printfUniversal();

private:

int hour;

int minute;

int second;

};

扩展资料:

注意事项

构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。

构造函数的格式为:

()
{        //Do something...}

为类的名字

为参数列表

在类创建的时候,都会调用构造函数,但是有的时候不写自己的构造函数的话, 系统会调用默认的构造函数 (也就是什么都不做),但是当写了构造函数后, 系统就不会调用默认的构造函数,构造函数的声明必须写在类中, 但是实现可以写在外头 (如果不知道如何将成员函数外部实现的看这里):

class Student

{

    string name;

    public:

        Student(string)

};

Student::Student(string name)

{

    this->name=name;//这里可以直接访问类的成员

}

备注: 在第9行用到了 this 指针

这样一来, 在声明类的时候, 可以调用构造函数, 其格式为:

变量名()

指该类的构造函数的参数列表

构造函数必须这样写, 不得写在声明后的其余地方

#include

#include

using namespace std;

class Student

{

    string name;

    public:

        Student(string);

        string GetName();

};

Student::Student(string name)

{

    this->name=name;

}

string Student::GetName()

{

    return name;

}

int main()

{

    Student s;

    s.Student("TweeChalice");//Error!!!

    cout<

}

回答2:

int main()
{

time1 t1; //你并没有在类中添加基础的构造函数 这一行可以改成time1 t1(time_t对象)
cout << t1.printfUniversal();
cout << "\nHello world!" << endl;
return 0;
}

//===================
class time1
{
public:

time1(); //加一行 然后再Cpp中写实现

time1( time_t);
void setTime(int ,int ,int );
void printfUniversal();
private:
int hour;
int minute;
int second;
};

回答3:

很明显构造函数需要参数,而time1 t1;又没有参数,所以报错了

回答4:

你没有给time1编写默认构造函数……
在类的定义里加一句time1():hour(0),minute(0),second(0){}试试