Сообщение об ошибке компилятора с cout

Раньше я ошибался при вводе сообщения об ошибке. Это исправлено.

В настоящее время я получаю следующее сообщение об ошибке компилятора

error: no match for 'operator<<' in 'std::cout << Collection::operator[](int)(j)'

Код, на который жалуется компилятор, -

cout << testingSet[j];

Где testingSet является объектом типа Collection , в котором оператор [] перегружен для возврата объекта типа Пример . В примере есть функция друга, которая перегружает оператор << для ostream и Example.

примечание: на самом деле это прекрасно компилируется в Visual Studio, однако не компилируется с использованием g ++.

Вот реализация оператора << :

ostream& operator<<(ostream &strm, Example &ex)
{
     strm << endl << endl;
     strm << "{ ";
     map<string, string>::iterator attrib;
     for(attrib = ex.attributes.begin(); attrib != ex.attributes.end(); ++attrib)
     {
          strm << "(" << attrib->first << " = " << attrib->second << "), ";
     }
     return strm << "} classification = " << (ex.classification ? "true" : "false") << endl;
}

И ] operator []

Example Collection::operator[](int i)
{
      return examples[i];
}
0
задан Daniel 3 October 2011 в 09:32
поделиться