我是C ++的新手,所以我可能会犯很多错误。我来自C#,对C ++中的方法不太熟悉。
所以我有一个Elevator类,一个Forklift类和一个Crate类。我需要将Elevator传递给Forklift的构造函数。根据我的研究,这是做到这一点的方法,但我仍然会收到错误。
在Crate类中我传递一个对象并且它有效。
Forklift::Forklift(list<Crate> crates, Elevator & elevator)
{
for each (Crate crate in crates)
{
this->cratestack.push(crate);
}
this->elevator = elevator;
}
它说Elevator没有默认构造函数。我知道如果我没有定义一个,编译器就不会像在C#中那样生成一个,但是当我不能使用默认编译器时我是否需要它?我需要带有这些参数的电梯。
这是叉车的头文件:
class Forklift
{
private:
Elevator elevator;
stack<Crate> cratestack;
stack<Crate> helperstack;
public:
Forklift(list<Crate> crates,Elevator& elevator);
~Forklift();
int start();
};
这是电梯头:
class Elevator
{
private:
int minweight;
int maxweight;
int currentweight;
int tours;
public:
Elevator(int max, int min);
~Elevator();
bool Load(Crate crate);
int GetTour();
};
和源文件:
Elevator::Elevator( int max, int min)
{
this->maxweight = max;
this->minweight = min;
}
Elevator::~Elevator()
{
}
bool Elevator::Load(Crate crate)
{
if (currentweight + crate.GetWeight() > maxweight)
{
return false;
}
else
{
return true;
}
}
int Elevator::GetTour()
{
return this->tours;
}
答案 0 :(得分:0)
构造函数也在scop Private 中。将其公之于众
试试吧