Erro em código exemplo sobre pilha em c++ com orientação a objetos

1. Erro em código exemplo sobre pilha em c++ com orientação a objetos

lucas
ljparaujo

(usa Debian)

Enviado em 10/11/2018 - 22:50h

Boa noite pessoal.
Estou seguindo um exemplo de um código que constrói uma pilha em c++ usando classes. Porem está dando erros que não consigo entender, e estou seguindo o exemplo a risca. Eis os códigos:

cell.h:
#ifndef CELL_H
#define CELL_H

class Cell
{
public:
Cell(int value, Cell *next);
~Cell();

int value() const { return m_value; }
Cell *next() const {return m_next; }

private:
int m_value;
Cell *m_next;

};

#endif


cell.cpp:
#include "cell.h"
#include <iostream>

using namespace std;

Cell::Cell(int value, Cell *next): m_value(value), m_next(next)
{
//Empty
}


stack.h:
#include "cell.h"
#include <iostream>

using namespace std;

Cell::Cell(int value, Cell *next): m_value(value), m_next(next)
{
//Empty
}


stack.cpp:
#include "stack.h"
#include "cell.h"
#include <assert.h>
#include <iostream>

using namespace std;

Stack::Stack():m_firstCellPtr(nullPtr), m_size(0)
{
//Empty
}

void Stack::push(int value)
{
m_firstCellPtr = new Cell(value, m_firstCellPtr);
++m_size;
}

int Stack::top()
{
assert(!empty());
return m_firstCellPtr->getValue();
}

void Stack::pop()
{
assert(!empty());
Cell *deleteCellPtr = m_firstCellPtr;
m_firstCellPtr = m_firstCellPtr->getNext();
delete deleteCellPtr;
--m_size;
}

int Stack::size() const
{
return m_size;
}

bool Stack::empty() const
{
return (m_firstCellPtr == nullPtr);
}


main.cpp:
#include <string.h>
#include <iostream>

#include "cell.h"
#include "stack.h"

using namespace std;

int main(int argc, char const *argv[])
{
Stack s;

s.push(1);
s.push(2);
s.push(3);

cout <<"\nTop: " << s.top() <<", size: " << s.size() <<", empty " << (s.empty() ? "true" : "false") << endl;

s.pop();
s.pop();
s.push(4);

cout <<"\nTop: " << s.top() <<", size: " << s.size() <<", empty " << (s.empty() ? "true" : "false") << endl;


return 0;
}


Qualquer explicação já será de grande ajuda. Desde já estou muito agradecido.


  


2. Re: Erro em código exemplo sobre pilha em c++ com orientação a objetos

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 11/11/2018 - 12:12h

Ola! Qual é o erro? Tens como colar o log completo de erro?

Seu código está bastante estranho:

- O arquivo stack.cpp apresenta a implementação da classe Stack, porém, o arquivo stack.h está com a implementação da classe Cell ao invés da declaração da classe Stack
- O arquivo cell.cpp contém a implementação da classe Cell, contudo, o arquivo cell.h apresenta um esboço de classe mais completa, mas que não possui implementação das funções value e next
-






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts