Раньше я ошибался при вводе сообщения об ошибке. Это исправлено.
В настоящее время я получаю следующее сообщение об ошибке компилятора
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];
}