Cześć.
Możecie mi powiedzieć dlaczego zwraca mi liczbę mimo, ze warunek w ifie jest błędny? Chodzi o metodę sizeOfStack.
#include "stack.h"
#include <iostream>
using namespace std;
Stack::Stack()
{
cout <<"Podaj wielkosc stosu:";
cin>>arraySize;
stackArray = new int[arraySize];
top = -1;
}
bool Stack::isEmpty()
{
return top==-1;
}
int Stack::getSizeOfStack()
{
if(!isEmpty())
return top;
}
.....
Gdy w mainie wypisuje getSizeOfStack zwraca mi liczbę -256. Nie wiem dlaczego, skoro zmienna top wynosi -1, czyli isEmpty jest prawdziwe. Wynikało by z tego, że ma się nic nie pojawić w konsoli.
//EDIT
Cały kod:
Main:
#include <iostream>
#include "stack.h"
using namespace std;
int main()
{
Stack stack;
cout << stack.getSizeOfStack();
}
Stack.cpp
#include "stack.h"
#include <iostream>
using namespace std;
Stack::Stack()
{
cout <<"Podaj wielkosc stosu:";
cin>>arraySize;
stackArray = new int[arraySize];
top = -1;
}
bool Stack::isEmpty()
{
return top==-1;
}
int Stack::getSizeOfStack()
{
if(!isEmpty())
return top;
}
void Stack::pop()
{
if(!isEmpty())
top--;
else
cout<<"stos jest pusty :("<<endl;
}
void Stack::push(int number)
{
if(!(getSizeOfStack()==arraySize))
{
top ++;
stackArray[top] = number;
}
}
stack.h
class Stack
{
public:
Stack();
int *stackArray;
int top;
int arraySize;
void push(int);
void pop();
int getSizeOfStack();
bool isEmpty();
};