Я хотел бы задать 2 вопроса об этом коде.Где я просто пытаюсь смоделировать стек.
Stack.h
#pragma once
namespace stackandqueue {
class Stack
{
private:
int index;
int *stackdata;
public:
Stack();
~Stack();
void push(int val);
int pop();
int top();
bool isEmpty();
};
}
Stack.cpp
#include "stdafx.h"
#include "Stack.h"
namespace stackandqueue {
Stack::Stack() : index{ 0 }
{
stackdata = new int[index];
}
Stack::~Stack()
{
delete[] &stackdata;
}
void Stack::push(int val) {
stackdata[index] = val;
index++;
}
int Stack::pop() {
int val = stackdata[index];
index--;
return val;
}
int Stack::top() {
return stackdata[index];
}
bool Stack::isEmpty() {
return index == 0;
}
}
Смысл в том, чтобы позволить мне создать
Stack stack;
И затем он инициализирует динамический массив с 0 в качестве первого индекса, который позволяет мне выдвигать, всплывать, верхние значения.
Первый вопрос: почему у меня есть неразрешенные символы для определений методов?
Второй вопрос: по поводу «stackdata» вы считаете правильным, если я хочу объявить «массив» с динамическим размером для этого поведения?
Я открыт для улучшений и лучших практик.Я привык к языкам программирования, но я никогда не вникал в c ++ и не хочу иметь плохих практик.Итак, вы видите, что я беру его с самого начала.
Спасибо.
Я публикую решение, достигнутое с вашей помощью, которое, возможно, кому-то поможет.
class Stack
{
private:
int index;
int* stackdata;
public:
Stack(int size);
~Stack();
void push(int val);
int pop();
int top();
bool isEmpty();
};
Stack::Stack(int size)
: index {0}, stackdata{new int[size]}
{
}
Stack::~Stack()
{
delete[] stackdata;
}
void Stack::push(int val) {
stackdata[index] = val;
index++;
}
int Stack::pop() {
index--;
return stackdata[index];
}
int Stack::top() {
return stackdata[index-1];
}
bool Stack::isEmpty() {
return index == 0;
}