Ну, этот вопрос не только о сокетах, но больше о C ++. Тем не менее, у меня есть класс, который может отправлять и получать данные через сокет. Я хотел бы отправить данные с синтаксисом потока, поэтому я создаю << оператор в моем классе:
virtual const BaseSocket& operator << (const std::string &oMessage);
Теперь в моем коде, и я могу использовать его, и он работает:
socket << "data";
Проблема, с которой я сталкиваюсь сейчас, заключается в том, что я могу поместить только один элемент в строку и не использовать:
socket << "data1" << "data2";
Я знаю, что мне пришлось бы перегружать оператор для других типов данных, когда я хочу также передавать их, например, int, float и т. Д., Но я не мог понять, почему я не могу связать переменные.
Вы должны удалить const
от const BaseSocket&
BaseSocket& operator << (const std::string &oMessage);
const — это то, что мешает вам цепляться, потому что оператор <<
сам по себе является неконстантным, поэтому он не может быть вызван для константной переменной, которая возвращается из предыдущего вызова оператора
Других решений пока нет …