бинарный '==': не найден оператор, который принимает левый операнд типа 'std :: string' (или нет приемлемого преобразования) - PullRequest
4 голосов
/ 05 марта 2012

Я пишу функцию класса шаблона, сравнивающую std :: strings. std :: string является параметром шаблона. Моя проблема в том, что я не могу сравнить две константные строки с оператором "==", тогда я думаю, что я создаю две неконстантные временные строковые переменные для выполнения сравнения, но все равно не могу скомпилировать. Не знаю почему.

класс VGraph имеет вид VGraph<std::string, std::string> myGraph;

template <typename V, typename E>
size_t VGraph<V, E>::find(const V& vert)
{
    V temp = vert; // (1)
    for (size_t i=0; i<graph.size(); i++)
    {
        V noneConst = graph[i].getVertex(); // (2)
        if (temp==noneConst)// I think broblem is here, and tried to fix using (1)(2)
            return i;
    }
    return graph.size();
}

Прототип родственной функции

template <typename V, typename E>
const V& VVertex<V, E>::getVertex();

1 Ответ

18 голосов
/ 05 марта 2012

Вы, вероятно, забыли явное:

#include <string>

Класс std::string определяется другим включенным вами заголовком, но не оператором ==.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...