перегрузки конструкторов и оператора '=' имеются):
ostream& operator<< (ostream& out, const MyString& obj)
{
for (int i = 0; i < obj.Size(); ++i)
out << obj[i];
out << '\n';
return out;
}
При таком обьявлении компилятор ругается на публичные методы Size и перегрузку operator[]. Ошибки:
1. Объект содержит квалификаторы типа, несовместимые с элементом функцию "MyString::Size".
2. Отсутствует оператор "[]", соответствующий этим операндам
При этом если убрать const во втором параметре, то все работает. Почему возникают эти ошибки и почему они исчезают при убирании const? Я же действительно ничего не изменяю в обьекте при выводе...
P.s. При обращении к обьекту (obj.) компилятор показывает только деструктор. Но нажав на "показать дополнительные результаты", показывает все методы. Если убрать const, то показывает все методы сразу. Почему так происходит?
у тебя MyString::Size() не конст
аа, если передаю константный обьект для перегрузки вне класса, то можно использовать только константные методы класса...
Обсуждают сегодня