【发布时间】:2020-05-17 03:31:46
【问题描述】:
我的一个类收到一个常见错误,即没有为特定类定位默认构造
这是有问题的类及其构造函数
class Campaign {
public:
double funding;
double managerEffectiveness;
Date Day; //determine when they cant spend money anymore
Campaign(double funding, double managerEffectiveness, Date Day) {
funding = funding;
managerEffectiveness = managerEffectiveness;
Day = Day;
}
};
错误发生在第 8 行,特别是日期日期。这个 Date 类型的变量可以在其他构造函数中以类似的方式成功使用,例如这里是另一个使用 Date 类的类。确切的错误是“日期”类不存在默认构造函数
class electrorateSupport: public Electrorates{
public:
Date Day;
double funding;
double financialEffectiveness();
double fudningImpact();
electrorateSupport(Date Day, double funding,double stanceDistriubtion, int Cluster)
:Electrorates(stanceDistriubtion,Cluster), Day(Day), funding(funding) {
Day = Day;
funding = funding;
}
);
这个类类似于 Campaign 类,唯一的大区别是它是一个继承自另一个的子类。我一直在比较这两个类以找到可能导致我的错误的任何其他差异,但我无法确定任何差异。我也尝试多次重写该类,但仍然没有明确的问题。感谢您的帮助!
已提供编辑日期类
class Date {
public:
int Day;
int Month;
int Year;
Date(int day, int month, int year) {
this->Day = day;
this->Month = month;
this->Year = year;
}
void setDay(int day)
{
Day = day;
}
void setMonth(int month)
{
Month = month;
}
void setYear(int year)
{
Year = year;
}
int getDay()
{
return Day;
}
int getMonth()
{
return Month;
}
int getYear()
{
return Year;
}
};
【问题讨论】:
-
Date长什么样子? -
什么是
Date? -
"
Day = Day" -- 你希望通过给自己分配一个对象来完成什么?这是您期望在这里发生的事情吗?如果不是,那你肯定错了,因为这就是 在这里发生的事情。看来你需要学习如何使用构造函数的初始化部分。 -
electrorateSupport的构造函数在其构造函数初始化列表中初始化Day。Campaign的构造函数没有,这意味着它需要默认初始化,但它显然缺少默认构造函数。 -
你需要了解更多关于构造函数的知识,阅读这篇geeksforgeeks.org/constructors-c
标签: c++ class constructor