Я только что построил шаблонную реализацию моей сети поддержки.
вот мой шаблонный класс, который вызывает мой сетевой класс:
AbstractNetwork.hpp :
#include "Network.hpp"
template <typename T, typename R, typename S, typename A>
class AbstractNetwork
{
private:
T connection;
public:
AbstractNetwork(A acceptor)
{
connection = T::create(acceptor);
}
void write(const R msg)
{
connection->Swrite(msg);
}
R read(void)
{
connection->Sread();
return (connection->getIdata());
}
S getSocket(void)
{
return (connection->getSocket());
}
void close(void)
{
connection->close();
}
};
, и это мой сетевой класс, который работаетс boost::tcp::socket
:
Network.hpp
class Network : public boost::enable_shared_from_this<Network>
{
private:
tcp::socket socket;
std::vector<char> Idata;
char Iheader[MYINT];
bool readHeader;
void endRead(const error_code& error, size_t nbytes);
void endWrite(const error_code &error);
size_t Isize;
public:
typedef boost::shared_ptr<Network> ptr;
Network(io_service &);
~Network();
void close(void);
void Sread(void);
void Swrite(Commande *);
tcp::socket& getSocket(void);
Commande* getIdata(void);
std::string convertHeader(void);
static ptr create(io_service &);
};
я не даю весь код функции, потому что он слишком длинный, и я уверен, что он работает.
Когда я строю этот проект, у меня есть этоследующая ошибка в VS2010 Ultimate:
error LNK2001: unresolved external symbol "public: void __thiscall AbstractNetwork<class boost::shared_ptr<class Network>,struct Commande *,class boost::asio::basic_stream_socket<class boost::asio::ip::tcp,class boost::asio::stream_socket_service<class boost::asio::ip::tcp> > &,class boost::asio::io_service &>::close(void)"
error LNK2001: unresolved external symbol "public: void __thiscall AbstractNetwork<class boost::shared_ptr<class Network>,struct Commande *,class boost::asio::basic_stream_socket<class boost::asio::ip::tcp,class boost::asio::stream_socket_service<class boost::asio::ip::tcp> > &,class boost::asio::io_service &>::write(struct Commande * const)"
error LNK2001: unresolved external symbol "public: class boost::asio::basic_stream_socket<class boost::asio::ip::tcp,class boost::asio::stream_socket_service<class boost::asio::ip::tcp> > & __thiscall AbstractNetwork<class boost::shared_ptr<class Network>,struct Commande *,class boost::asio::basic_stream_socket<class boost::asio::ip::tcp,class boost::asio::stream_socket_service<classboost::asio::ip::tcp> > &,class boost::asio::io_service &>::getSocket(void)"
error LNK2001: unresolved external symbol "public: __thiscall AbstractNetwork<class boost::shared_ptr<class Network>,struct Commande *,class boost::asio::basic_stream_socket<class boost::asio::ip::tcp,class boost::asio::stream_socket_service<class boost::asio::ip::tcp> > &,class boost::asio::io_service &>::AbstractNetwork<class boost::shared_ptr<class Network>,struct Commande *,classboost::asio::basic_stream_socket<class boost::asio::ip::tcp,class boost::asio::stream_socket_service<class boost::asio::ip::tcp> > &,class boost::asio::io_service &>(class boost::asio::io_service &)
это долго, но я хочу дать вам все эти ошибки, потому что я думаю, что проблема связана с моим типом шаблона.так что я думаю, что моя проблема дошла до AbstractNetwork.hpp, но я не могу найти это.
Вы знали об этом?