如何在c ++中调用函数定义中的类

时间:2015-10-27 05:38:07

标签: c++ function class constructor destructor

这是我第一次在编程方面寻求帮助。几个星期以来,我一直在为我的编程课程编写一个注册程序。这对我来说相当令人沮丧。我必须使用两个类: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函数?

2 个答案:

答案 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();
}