Мой сервер выбрасывал это исключение в течение 2 дней, и я решил его, переместив функцию разъединения с помощью:
outputStream.close();
inputStream.close();
Client.close();
. К концу строки списка. если это кому-то помогло.
Добавление ключевого слова const
в конце метода запрещает ему изменять любые значения членов или вызывать любые неконстантные методы. Единственным исключением являются изменяемые значения, которые всегда можно изменить.
class A
{
int i1;
mutable int i2;
public:
void m() const
{
// i1 = 5 <- error
i2 = 5 // <- ok
}
}
В этой функции:
void testFunc(const CMyString &strParam) {
cout << strParam << endl;
}
strParam
является ссылкой const
на CMystring
, поэтому вы можете вызывать только const
-квалифицированный метод для него:
В рамках const
-квалифицированного метода вы не можете изменять не mutable
атрибуты или вызывать не const
методы, что гарантирует, что ваш объект не «модифицирован» (по крайней мере, он не должен быть из внешняя точка зрения).
Обратите внимание, что вам, скорее всего, следует преобразовать в const char*
из const
-квалифицированного метода, в противном случае можно было бы сделать это:
void testFunc(const CMyString &strParam) {
// I am modifiying the underlying char array of const variable
static_cast<char*>(strParam)[0] = '\0';
}
Поэтому ваш оператор преобразования должен быть:
operator const char*() const;