将指针与函数、类和堆栈一起使用

Using pointers with functions, classes, and stacks

本文关键字:堆栈 一起 指针 函数      更新时间:2023-10-16
#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 Selectn"
     << 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);
}

我正在尝试使推送项和弹出项工作。该程序创建一个数据类型为InventoryBin的堆栈...不发布库存箱你知道我做错了什么吗?我的推送项目函数有错误代码。

没有合适的构造函数可以从 StackInventoryBin * 转换为 InventoryBin

stack->push(stack);是错误的。stack::push查找。您应该在堆栈上推送一个项目,而不是整个堆栈。错误代码说明了一切:push()期望一个InventoryBin,但你传递的是整个堆栈。

此外,我不知道

如果你把整个堆栈推到自己身上,你会期望会发生什么......