C2440. Ошибка при итерации по элементам массива строк
Пытаюсь писать клиент-серверный чат. Использую библиотеку boost. В данном случае модуль boost::asio. Код программы я взял из книги по сетевому программированию (https://github.com/Vasilui/habrahabr/blob/master/Boost.Asio_C%2B%2B_Network_Programming/Chapter_4/async_client.cpp)
Проблема в том, что код не работает - возникает ошибка, которую я не в силах решить из-за неопытности.
Я проверил, что в функцию старт во время цикла for передаются объекты типа "char *". Возможно(я предполагаю) это и продуцирует ошибку, т.к. функция start требует, чтобы ей передавали объект типа "ссылка на string".
Как мне следует переписать программу, чтобы она отработала без ошибок? Я предполагаю, что можно сделать массив сразу из string - но я не знаю, как потом с ним работать в данных условиях.
Текст ошибки:
Ошибка C2440 инициализация: невозможно преобразовать "const char [5]" в "char *"
Фрагмент кода, описывающий функции start:
static ptr start(ip::tcp::endpoint ep, const std::string& username) {
ptr new_(new talk_to_svr(username));
new_->start(ep);
return new_;
}
Фрагмент кода, в котором возникает ошибка:
int main(int argc, char* argv[]) {
// TODO: connect several clients
ip::tcp::endpoint ep(ip::address::from_string("127.0.0.1"), 8001);
char* names[] = { "John", "James", "Lucy", "Tracy", "Frank", "Abby", 0 };
for (char** name = names; *name; ++name) {
talk_to_svr::start(ep, *name);
boost::this_thread::sleep(boost::posix_time::millisec(100));
}
service.run();
}