Вы сравниваете char *
, используя operator==
. Либо пусть oper
будет std::string
вместо
std::string oper
Чтобы использовать сравнение строк, перечисленное здесь: http://en.cppreference.com/w/cpp/string/basic_string/operator_cmp
или если вам нужно использовать char *
для каких-либо ограничений, используйте strcmp
:
if (!strcmp(oper, "+")) {
// ...
Вам также нужно, чтобы переменная операнда указывала на некоторый буфер, чтобы поток мог считывать. Это немного сложнее, и я просто рекомендую изменить тип oper
на std::string
.
Проблема с вашим кодом в том, что он сравнивает указатели с массивами символов. То, что вы получите от ваших методов ввода, будет новой строкой из потока ввода и никогда не будет иметь тот же адрес, что и строки только для чтения в вашей программе.
Таким образом, поскольку ни одно из условий не является true
, ответ не был назначен. Таким образом, вывод на него составляет неопределенное поведение .