Я изучаю стеки в моем текущем курсе CS. Я работал над функциями, и когда я пошел на тестирование, для функции pop я получил ошибку: «нет соответствующей функции для вызова DynStack :: pop ()»
Вот мой код:
main ()
#include <iostream>
#include <cstddef>
#include "src\DynStack.cpp"
#include "DynStack.h"
using namespace std;
int main()
{
DynStack<char>cstack;
cstack.push('A');
cstack.push('B');
cstack.push('C');
cstack.pop();
cout << cstack.top->value << endl;
return 0;
}
DynStack. cpp
#include "DynStack.h"
#include <cstddef>
template<typename T>
DynStack<T>::DynStack()
{
top = NULL;
}
template<typename T>
void DynStack<T>::push(T val)
{
StackNode *nodePtr; // ptr to traverse thru the stack
StackNode *newNode;
newNode = new StackNode; // makes a new StackNode
newNode->value = val;
newNode->next = NULL;
if (top == NULL) // If the stack is empty
{
top = newNode; // Make newNode the first node;
}
else
{
nodePtr = top; // make our ptr = top
nodePtr->next = newNode; // make the node after the top our newNode
top = newNode; // newNode is our new top of the stack
}
}
template <typename T>
void DynStack<T>::pop(T &)
{
StackNode *nodePtr; // makes a nodePtr to traverse the stack
if (top == NULL)
{
return;
}
else
{
nodePtr = top;
nodePtr = top--;
delete top;
top = nodePtr;
delete nodePtr;
}
}
template <typename T>
DynStack<T>::~DynStack()
{
//dtor
}
DynStack.h
#ifndef DYNSTACK_H
#define DYNSTACK_H
template <typename T>
class DynStack
{
private:
struct StackNode
{
T value;
StackNode *next;
};
StackNode *top;
public:
DynStack();
~DynStack();
void push(T);
void pop(T&);
bool isEmpty();
};
#endif // DYNSTACK_H
Я еще очень рано проверяю это программа. Я предполагаю, что мне нужно что-то поместить в скобки cstack.pop (); но я не знаю, что бы я там поместил? Поп будет просто удалить значение да? Я не думаю, что это потребует какой-либо информации.
Если бы это была моя программа, я бы подумал убрать T & из пустого DynStack :: pop (T &), но мой профессор написал об этом. Я предполагаю, что он положил это там, так что я должен был изучить это Погуглил кучу, но не приближаюсь.
Спасибо вам всем.