gpt4 book ai didi

C++ 为什么我的数组没有弹出到我的堆栈中?

转载 作者:太空宇宙 更新时间:2023-11-04 15:48:38 25 4
gpt4 key购买 nike

我为 studentrecords 创建了一个数组,我应该将它弹出到我的堆栈中.. 一切正常,除了我在 MAIN 中的 stack.pops 和 stack.pushes ......我非常接近完成这个程序我想知道是否有人知道任何解决方案吗?

#include <iostream>
#include <list>
#include <cstdlib>
#include <cstring>
#include <iomanip>
#include <string>

using namespace std;

class Studentrecords
{
private:
struct student
{
string name;
string address;
int ID;
double gpa;
};

student *stackArray;
int stackSize;
int top;

public:
Studentrecords();
Studentrecords(int size);
~Studentrecords();
void push(string name, string address, int id, double gpa);
void pop();
bool isFull() const;
bool isEmpty() const;
void display();
};

Studentrecords::Studentrecords(int size)
{
stackArray = new student[size];
top = -1;
}

Studentrecords::Studentrecords()
{
stackSize = 20;
stackArray = new student[stackSize];
top = -1;
}

Studentrecords::~Studentrecords()
{
delete [] stackArray;
}

void Studentrecords::push (string name, string address, int id, double gpa)
{
if (isFull())
{
cout << "The stack is full!" << endl;
}
else
{
student newStudent;
newStudent.name = name;
newStudent.address= address;
newStudent.ID = id;
newStudent.gpa = gpa;
stackArray[top] = newStudent;
top++;
}
}

void Studentrecords::pop ()
{
if (isEmpty())
{
cout << "The stack is empty!" << endl;
}
else
{
cout << stackArray[top-1].name << endl;
cout << stackArray[top-1].address << endl;
cout << stackArray[top-1].ID << endl;
cout << stackArray[top-1].gpa << endl;
top--;
}
}

bool Studentrecords::isFull() const
{
bool status;
if (top == stackSize - 1)
status = true;
else
status = false;
return status;
}

bool Studentrecords::isEmpty() const
{
bool status;
if (top == -1)
status = true;
else
status = false;
return status;
}

void Studentrecords::display()
{
for (int i = 0; i< top; i++)
{
cout << stackArray[i].name << endl;
cout << stackArray[i].address << endl;
cout << stackArray[i].ID << endl;
cout << stackArray[i].gpa << endl << endl;
}
}

int main()
{
int catchVar;

Studentrecords stack();

cout << "Pushing 1st";
stack.push("Jonny", "123 ave", 2343, 3.2);

cout << "pushing 2nd";
stack.push("Robby", "123 ave", 2343, 3.2);

cout << "Popping ";
stack.pop(catchVar);
cout << catchVar << endl;

cout << "Popping ";
stack.pop(catchVar);
cout << catchVar << endl;

return 0;
}

最佳答案

Studentrecords stack();

没有声明一个名为 stackStudentrecords,它声明了一个名为 stack 的函数,该函数返回一个 Studentrecords。改成

Studentrecords stack;

此外,您的类至少需要一个复制构造函数和赋值运算符。

关于C++ 为什么我的数组没有弹出到我的堆栈中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12522179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com