【发布时间】:2011-08-31 12:43:44
【问题描述】:
我只是为了练习而编写了一个简单的 C++ 程序,但我一直收到同样的错误,这就是说我没有默认构造函数。但是,我已经尝试显式声明一个默认构造函数,但我仍然得到完全相同的错误。我不明白问题是什么。这是我从 GNU C++ 编译器得到的错误:
sorting.cpp:在函数“int main()”中:
sort.cpp:5:错误:没有匹配的函数调用‘Time::Time()’
sort.h:12:注意:候选人是:Time::Time(int, int)
sort.h:7: 注意:Time::Time(const Time&)
这里是代码: sorting.cpp
#include "sorting.h"
int main()
{
Time* courses = new Time[3];
courses[1].setTime(9,30);
courses[2].setTime(10,30);
courses[3].setTime(12,0);
Course this_year(3, courses);
this_year.printTimes();
delete [] courses;
return 0;
}
sorting.h:
#include iostream>
using namespace std;
class Time
{
private:
int hours;
int minutes;
public:
Time();
Time(int h = 0, int m = 0) ;
void setTime(int h, int m) ;
void printTime();
};
class Course
{
private:
int period_count;
Time* periods;
public:
Course(int count, ...);
void printTimes();
};
Time::()
{
};
Time::Time(int h, int m)
{
hours = h;
minutes = m;
};
void Time::setTime(int h, int m)
{
hours = h;
minutes = m;
return;
};
void Time::printTime()
{
cout << hours << ":" << minutes;
return;
}
Course::Course(int count, Time* the_times)
{
period_count = count;
for (int i = 0; i < count; ++i)
{
periods[i] = the_times[i];
}
}
void Course::printTimes()
{
for(int i = 0; i < count; ++i)
{
periods[i].printTime();
}
return;
}
【问题讨论】:
-
-1:操作似乎已经编辑了这个并通过添加默认构造函数来解决问题。
-
您还有另一个问题,即数组从零开始。索引 1、2 和 3 实际上应该是 0、1 和 2。
-
您发布的代码不会产生该错误消息。您能否将示例的复杂性降低到单个文件、单个类,但仍然显示错误?
-
在不标记更改的情况下修复代码是不礼貌的,因为它会使没有看到原始问题的每个人感到困惑。
-
@Evan,它会根据您所做的更改给出不同的信息。现在它给出了一个关于歧义的错误,这很容易弄清楚,如果你的问题有真正的错误信息,你现在就会有一个好的、正确的答案。
标签: c++ constructor g++