Ошибка компилятора; не удалось преобразовать void в bool
Я запускаю эту программу на компиляторе и она возвращает мне следующую ошибку:
Невозможно преобразовать 'стека.с std::стек&ЛТ;тип wchar_t&ГТ;::поп() от пустоты к bool.
Что же мне делать?
#include <string> #include <stack> #include <iostream> using namespace std; class CheckNumbers { public: virtual void check(const std::wstring &s) { std::stack<wchar_t> stack = std::stack<wchar_t>(); int l = s.length(); int zeroCounts = 0; int onesCounts = 0; for (int i = 0;i < l;i++) { stack.push(s[i]); } while (!stack.empty()) { if (stack.pop()! == L'0') { zeroCounts++; } else { onesCounts++; } } if (zeroCounts > onesCounts) { std::wcout << std::wstring(L" 0 occurs most frequently by ") << (zeroCounts - onesCounts) << std::endl; } else if (zeroCounts < onesCounts) { std::wcout << std::wstring(L" 1 occurs most frequently by ") << (onesCounts - zeroCounts) << std::endl; } else { std::wcout << std::wstring(L" 1 and 0 both occur equal") << std::endl; } } }; // Main method class to call the method of CheckNumbers class class Test { static void main(std::wstring args[]) { (new CheckNumbers())->check(L"010100111"); } };
Что я уже пробовал:
Я никогда не сталкивался с такими ошибками, и я довольно новичок в C++
Joe Woodbury
Маленькая точка:
классный тест
{
static void main(std::wstring args[])
{
(новые контрольные номера())->проверка(L"010100111");
}
};
Похоже, он похож на C#. Она протекает. В этом случае я предлагаю объявить экземпляр CheckNumbers и вызвать метод.
Для std::stack<wchar_t> stack = std::stack<wchar_t>(); отбросьте то, что находится от знака равенства до точки с запятой.
Петлю нажима можно было сделать:
для (wchar_t ch : s)
{
стек.толчок(ч);
}