我如何将对象(在我的Snack
对象中)传递给重载的构造函数?
根据说明:
它应该有两个数据成员 -
Snack
,以及当前位于广告位中的Snac
k的数量。
我如何将该零食对象传递给VendSlot
的构造函数?
VendSlot::VendSlot() //default constructor
{
Snack snackItem;
numOfSnacks = 5;
}
VendSlot::VendSlot(Snack snacks, int quantity) //overloaded constructor
{
Snack snackObjects = snacks;
numOfSnacks = quantity;
}
这是我的getSnack()
函数:如何为对象使用get函数?
int VendSlot::getSnack()
{
return snacks; //I have no idea how to call the snack object through here?
}
EDIT2 我更新了这些代码,但现在这些是正确的吗?
public:
VendSlot(); //default constructor
Snack snacks; //instantiate Snack object
VendSlot(Snack the_snacks, int quantity);
Snack getSnack(); //return snack
int getAmount(); //get amount of snacks available
void decrementAmount(int); //function to decrease storage in vending machine by 1.
~VendSlot(); //destructor
private:
Snack snack; //passes snack object
int numOfSnacks; // number of snacks
{
Snack snackItem;
numOfSnacks = 5;
}
VendSlot::VendSlot(Snack the_snacks, int quantity) //overload constructor
{
snacks = the_snacks;
numOfSnacks = quantity;
}
int VendSlot::getAmount()
{
return numOfSnacks;
}
这是必需的主要功能 - 还有很多其他项目,但我觉得上面是我问题的一部分。
#include <iostream>
#include <string>
#include "Snack.h"
#include "VendSlot.h"
#include "miniVend.h"
using std::cout;
using std::cin;
using std::string;
using std::endl;
int main()
{
Snack s1("corn chips", 0.75, 200);
Snack s2("candy bar", 1.25, 300);
Snack s3("root beer", 2.00, 450);
VendSlot vs1(s1, 2);
VendSlot vs2(s2, 1);
VendSlot vs3(s3, 0);
VendSlot vs4; // five bottles of water
miniVend machine(vs1, vs2, vs3, vs4, 0);
cout << machine.numEmptySlots() << endl;
cout << machine.valueOfSnacks() << endl;
cout << machine.getMoney() << endl;
// machine.buySnack(1);
cout << machine.numEmptySlots() << endl;
cout << machine.valueOfSnacks() << endl;
cout << machine.getMoney() << endl;
return 0;
}
答案 0 :(得分:1)
你的构造函数都以某种方式不正确
ITPHOFPWRFL01B E:\ || 489.9106GB || 549.9971GB ..
基本上,您的VendSlot::VendSlot() //default constructor
{
Snack snackItem; // <-- This is a local variable/object, it is not a member
numOfSnacks = 5;
}
VendSlot::VendSlot(Snack snacks, int quantity) //overload constructor
{
Snack snackObjects = snacks; // <-- This is a local variable/object, it is not a member
numOfSnacks = quantity;
}
课程应如下所示:
VendSlot
请注意,class VendSlot {
private:
Snack snacks;
int numOfSnacks;
public :
VendSlot(): numOfSnacks(0) {
// write some code to assign default value for snacks
}
VendSlot(Snack the_snacks, int quantity) : snacks(the_snacks), numOfSnacks(quantity) {
}
Snack getSnack() { return snacks; }
};
函数应返回getSnack
类型,而不是Snack
目前还不清楚你是什么意思
如何为对象使用get函数?
你指的是哪个对象? int
函数应该返回成员变量getSnack
修改强>
您编辑的代码仍在构造函数中使用局部变量,并且不会初始化成员变量snacks
。这是你出错的地方。
您可以采用这种方式实现默认构造函数,假设以下值为默认值(作为示例)
snacks
答案 1 :(得分:0)
首先,您应该实例化一个Snack
对象,然后将其传递给VendSlot
类的重载构造函数。
Snack mySnack;
VendSlot slot(mySnack, 12);
这将实例化一个VendSlot
类型的对象,其中mySnack
对象被传递到构造函数中,12
是第二个参数,数量。
答案 2 :(得分:0)
来自您可以做的其他课程&gt;
VendSlot myVendSlot(mySnack, 5);
获取变量 numOfSnacks 将getter修改为
int VendSlot::getSnack()
{
return numOfSnacks;
}
并且做:
int x = myVendSlot.getSnack();