2014-02-15 78 views
-4
#include "InventoryBin.h" 
#include "Stack.h" 
#include <string> 
#include <iostream> 
using namespace std; 

// Constants for the menu choices 
const int ENTER_ITEM = 1, 
    REMOVE_ITEM = 2, 
    QUIT = 3; 

int choice;  // To hold menu choice 

// Function prototypes 
void popItem(Stack<InventoryBin> *); 
void pushItem(Stack<InventoryBin> *); 
int menu(); 

void main() 
{ 
    // Create a stack object 
    Stack<InventoryBin> stack; 

    // Use a loop to ask user for input 
    do 
    { 
    menu(); 
    if (choice != QUIT) 
    { 
     switch (choice) 
     { 
     case ENTER_ITEM: 
      pushItem(&stack); 
      break; 
     case REMOVE_ITEM: 
      popItem(&stack); 
     } 
    } 
    } while (choice != QUIT); 
} 
int menu() 
{ 
    // Display menu 
    cout << "Please Select\n" 
    << ENTER_ITEM << " - Enter an item.\n" 
    << REMOVE_ITEM << " - Remove an item.\n" 
    << QUIT << " - Quit.\n"; 
    cin >> choice; 

    // Validate 
    while (choice < ENTER_ITEM || choice > QUIT) 
    { 
    cout << "Enter a valid choice: "; 
    cin >> choice; 
    } 
    return choice; 
} 
void pushItem(Stack<InventoryBin> *stack) 
{ 
    cout << "Enter serial number: "; 
    cin >> stack; 
    stack->push(stack); 
    cin.ignore(); 
    cout << "Enter manufacture date: "; 
    getline(cin, stack); 
    stack->push(stack); 
    cout << "Enter lot number: "; 
    cin >> stack; 
    stack->push(stack); 
} 

我试图让pushItem和popItem工作。该程序创建一个数据类型为InventoryBin的堆栈...没有发布InventoryBin,你知道我做错了什么吗?我的pushItem函数有错误代码。使用函数,类和堆栈指针

没有合适的函数存在从StackInventoryBin *转换为InventoryBin

+0

有些人是通过这种轻率的反应激怒,但:发布您的代码,我们会提供帮助。另外,另一方面,如果您显然已经努力将问题本身化,而不是执行完整的代码审查,那么人们将更有可能提供帮助。 – DevNull

回答

1

stack->push(stack);是错误的。查找stack::push。你应该推出一个ITEM堆栈,而不是整个堆栈。错误代码说明了这一切:push()需要一个InventoryBin,但是你传递整个堆栈。

而且进一步,我不知道你会想到,如果你推整个堆栈到自身,以发生什么....