我基本上不知道怎么问这个问题,我对c ++还不太新...反正我的问题是,我正在尝试创建这个vendingmachine类和这个用户类,用户需要访问insertCoins来自vendingMachine.cpp的方法和makePurchase方法我尝试在user.cpp中的方法调用中创建类自动售货机的实例,因为它在这里,但是当我尝试在自动售货机中列出项目时,显然列表是不受影响的,因为实例我在user.cpp中的方法调用内部创建只是临时的...我如何得到一个全局实例,以便我在user.cpp中使用它,同时在main.cpp内的自动售货机中使用它...
#include "user.h"
#include "VendingMachine.h"
user::user(){
}
user::~user(){
}
void user::makePurchase(int choice){
VendingMachine vm;
vm.purchaseProduct(choice);
}
void user::insertCoins(double coin){
VendingMachine vm;
vm.insertCoins(coin);
}
~~~~~~~~~~~~~
#include "VendingMachine.h"
#include "machineOperator.h"
#include "user.h"
using namespace std;
int main(){
VendingMachine vm = VendingMachine();
user u = user();
vm.listProducts();
cout << endl;
u.insertCoins(1.0);
u.insertCoins(1.0);
u.makePurchase(2);
vm.listProducts();
cout << endl;
return 0;
}
~~~~~~~~~~~~~~~~~~~
/*
* user.h
*
* Created on: Jan 12, 2014
* Author: Andrey
*/
#ifndef USER_H_
#define USER_H_
class user {
public:
user();
~user();
void makePurchase(int);
void insertCoins(double);
};
#endif /* USER_H_ */
答案 0 :(得分:4)
很自然地假设用户可以从许多不同的自动售货机购买并插入硬币。
void user::makePurchase (VendingMachine &vm, int choice)
{
vm.purchaseProduct(choice);
}
void user::insertCoins (VendingMachine &vm, double coin)
{
vm.insertCoins(coin);
}
答案 1 :(得分:0)
在用户中使用指向VendingMachine的指针并将其传递给构造函数。
user.h
class VendingMachine;
class User {
private:
VendingMachine* vm;
}
user.cc
#include "user.h"
#include "vendingmachine.h"
User::User(VendingMachine* vm): vm(vm) {}
void User::makePurchase(int choice){
vm->purchaseProduct(choice);
}
void User::insertCoins(double coin){
vm->insertCoins(coin);
}
main.cc
#include "VendingMachine.h"
#include "machineOperator.h"
#include "user.h"
using namespace std;
int main(){
VendingMachine vm = VendingMachine();
User u = User(&vm);
vm.listProducts();
cout << endl;
u.insertCoins(1.0);
u.insertCoins(1.0);
u.makePurchase(2);
vm.listProducts();
cout << endl;
return 0;
}