Вы на самом деле не ссылаетесь на библиотеку boost :: asio, поэтому общий объект не знает, где найти символ, который используется в вашем классе.
при условии, что библиотека называется boost_asio, вам нужно добавить:
-lboost_asio
к линии связи.
... поцарапайте это, совершенно неправильно.
Вам не хватает реализации сокета tcp_connection :: - отсюда и ошибка.
возможно, строка:
tcp::socket& socket();
в файле .h необходимо прочитать:
tcp::socket& socket() { return socket_; }