Почему функция не возвращает значение
Ошибка: функция push должна возвращать значение. Задача в целом создать контейнерный класс на основе массива с доступом по принципу стека. Ф-я push добавляет новый элемент в массив, перед этим происходит проверка, осталось ли место.
#include <iostream>
class Stack {
int* m_head;
int m_size;
int m_index;
public:
Stack(int size) : m_size{ size }, m_index{ 0 } {
m_head = new int[size];
}
~Stack() {
delete[] m_head;
}
bool push (int x){
if (m_index < m_size) {
m_head[m_index++] = x;
return true;
}
std::cout << "the stack is full" << std::endl;
return false;
}
};
int main() {
int n = 5;
Stack stack{n};
for (int i = 0; i < n; i++) {
if (!stack.push(i)) return;
}
}
Ответы (1 шт):
Проблема в том, что функция main возвращает int.
А у вас просто return. Без возвращаемого значения... Вот компилятор и недоволен.
Напишите что-то вроде
if (!stack.push(i)) return 0;
Кстати, ваше Ошибка: функция push должна возвращать значение. — неправда. Например, VC++ говорит
error C2561: main: функция должна возвращать значение
О push, как видите, и слова нет.
GCC пишет то же самое:
prog.cpp: In function ‘int main()’:
prog.cpp:31:29: error: return-statement with no value, in function returning ‘int’ [-fpermissive]
if (!stack.push(i)) return;
^~~~~~
(см. https://ideone.com/BpVJCH)
Так что будьте внимательны, читая сообщения об ошибках...