Как исправить 'несоответствие' оператору == 'при сравнении строк в операторе if - PullRequest
0 голосов
/ 02 января 2019

Попытка сравнить строки, используя операторы if, но получая ошибки оператора.Как я могу это исправить, чтобы оператор сравнивал строки?Использование Code :: Blocks в качестве компилятора.

Полный необработанный код Pastebin: https://pastebin.com/DJGqJBwu (больше не является общедоступным из-за решенного вопроса)

(ПРИМЕЧАНИЕ. Большая часть комментариев в необработанном кодепредназначен для экспериментов, и в целом существует множество ошибок, которые я могу повторить позже)

Это таблица лидеров, которую я пытаюсь создать для игры в крестики-нолики.Я пробовал разные способы сравнения строк, чтобы исправить это, например .compare.

void admin (string names, int nameW[10], int wins[10], unsigned int a[10]) //called variables from main
{
    char repeat = 'y'; //used for function loop
    char resetAll; //used elsewhere
    int winCount; //used elsewhere
    string reset;
    string modify; //used elsewhere
    string admin; //used elsewhere

    cin >> reset;

        //Reset
        if (reset==names[0])
        {
            wins[0] = 0;
        }
}

Журнал сборки:

error: no match for 'operator==' (operand types are 'std::__cxxll::string {aka std::__cxll::basic_string<char>}' and '__gnu_cxx::__alloc_traits<std::allocator<char> >::value_type {aka char}')

Я ожидаю, что переменная сброса будет такой же, какпеременная names [0], чтобы код мог выполняться.В результате код не может быть собран и запущен (не в состоянии протестировать программу).

1 Ответ

0 голосов
/ 02 января 2019

Проблема заключалась в параметре функции администратора, где строка "names" не объявляла массив.

Turn:

void admin (string names, ...

Into:

void admin (string name[10], ...
...