Найти и описать ошибку в коде с++ [закрыт]

207
31 августа 2018, 18:20

у меня есть код на с++, нужно найти в чем заключается ошибка, описать ее, и по возможности исправить:)

#include<iostream>
#include<queue>
using namespace std;
class stack
{
  public:
  stack(int size);
  void push(int d );
  int pop();
   };
  int main()
  {
   setlocale(LC_ALL,"RUSSIAN");
   stack a(10);
   a.push(1);
   a.push(2);
   a.push(3);
   a.push(4);
   a.push(5);
   cout << a.pop() << ' ';
   cout << a.pop() << ' ';
   cout << a.pop() << ' ';
   cout << a.pop() << endl;
   }

Answer 1

У вас есть создаваемый вами класс stack, с которым вы работаете. Вы указали компилятору, что у него есть конструктор и функции-члены pop и push. Компилятор принял это к сведению.

Вы использовали все три в программе. Компилятор не возражал - вы же объявили, что они есть (будут), он скомпилировал, написав в объектных файлах что-то вроде (в переводе на человеческий язык) - "компоновщик, тут вызов функции stack::pop, возьми его сам знаешь откуда, и подставь".

Компоновщик рад стараться. Он ищет эти функции везде - в каждом файле, который ему передан для компоновки (но вы передали только один, с приведенным текстом), в библиотеках - но ничего не находит. Потому что вы не озаботились написать определения (реализации) этих функций. И никто не знает, что вы хотели в них написать - может, функция pop должна выводить на экран мультик... А делать что-либо без команды ни компилятор, ни компоновщик не приучены.

Ну, и жалуется компоновщик на отсутствие ваших функций, как умеет - что (в переводе) встретил неразрешенный символ, на который есть ссылка в функции main...

Answer 2

У вас либо отсутствует реализация класса stack, либо вы хотели подключить std::stack, но забыли включить заголовочный файл

#include <stack>

Я склоняюсь к первому.

READ ALSO
Можно ли напрямую в функцию передать массив?

Можно ли напрямую в функцию передать массив?

Функция выдаёт случайные числа в определённом диапазоне с исключениемИсключений может быть сколько угодно

238
C++ вернуть из функции int разного размера

C++ вернуть из функции int разного размера

Нужна функция, которая будет способна возвращать как int32, так и int64Как это наиболее грамотно реализовать?

235