这是我第一次在编程方面寻求帮助。几个星期以来,我一直在为我的编程课程编写一个注册程序。这对我来说相当令人沮丧。我必须使用两个类:StoreItem和Register。 StoreItem处理商店销售的小商品列表。注册类主要处理项目,制作总账单并要求用户用现金支付。 这是StoreItem.cpp文件:
//function definition
#include <string>
#include <iostream>
#include "StoreItem.h"
#include "Register.h"
using namespace std;
StoreItem::StoreItem(string , double)
{
//sets the price of the current item
MSRP;
}
void StoreItem::SetDiscount(double)
{
// sets the discount percentage
MSRP * Discount;
}
double StoreItem::GetPrice()
{ // return the price including discounts
return Discount * MSRP;
}
double StoreItem::GetMSRP()
{
//returns the msrp
return MSRP;
}
string StoreItem::GetItemName()
{
//returns item name
return ItemName;
}
StoreItem::~StoreItem()
{
//deletes storeitem when done
}
这是Register.cpp: 请注意,这一个中的最后5个函数定义尚未完成......
// definition of the register header
#include "Register.h"
#include "StoreItem.h"
using namespace std;
Register::Register()
{ // sets the initial cash in register to 400
CashInRegister = 400;
}
Register::Register(double)
{ //accepts initial specific amount
CashInRegister ;
}
void Register::NewTransAction()
{ //sets up the register for a new customer transaction (1 per checkout)
int NewTransactionCounter = 0;
NewTransactionCounter++;
}
void Register::ScanItem(StoreItem)
{ // adds item to current transaction
StoreItem.GetPrice();
// this probably isnt correct....
}
double Register::RegisterBalance()
{
// returns the current amount in the register
}
double Register::GetTransActionTotal()
{
// returns total of current transaction
}
double Register::AcceptCash(double)
{
// accepts case from customer for transaction. returns change
}
void Register::PrintReciept()
{
// Prints all the items in the transaction and price when finsished
}
Register::~Register()
{
// deletes register
}
我的主要问题是Register :: ScanItem(StoreItem)...有没有办法正确地将函数从storeItem类调用到Register scanitem函数?
答案 0 :(得分:0)
你有:
void Register::ScanItem(StoreItem)
{ // adds item to current transaction
StoreItem.GetPrice();
// this probably isnt correct....
}
这意味着ScanItem
函数接受一个StoreItem
类型的参数。在C ++中,您可以只指定类型并使编译器满意。但是如果你打算使用这个参数,你必须给它一个名字。例如:
void Register::ScanItem(StoreItem item)
{
std::cout << item.GetItemName() << " costs " << item.GetPrice() << std::endl;
}
答案 1 :(得分:0)
为了能够调用您作为参数传递的对象的成员函数,您需要命名参数,而不仅仅是其类型。
我怀疑你想要像
这样的东西void Register::ScanItem(StoreItem item)
{
total += item.GetPrice();
}