Имеется класс:
//tcpClient.hpp
class tcpClient
{
private:
...
public:
tcpClient();
~tcpClient();
template <class F> void receiveData(F &handlerFunctor);
std::size_t sendData(const char* data);
void connectToHost(const char* server,int port);
...
}
//tcpClient.cpp
#include "tcpClient.hpp"
template <class F>
void tcpClient::receiveData(F &handlerFunctor)
{
...
};
void tcpClient::connectToHost(const char *server, int port)
{
...
};
std::size_t tcpClient::sendData(const char* data)
{
...
};
использую:
#include "../tcpClient/tcpClient.hpp"
int main()
{
...
c.connectToHost("xxx.ru",80);
c.sendData((char*)header);
c.receiveData(f);//undefined reference to `void tcpClient::receiveData<functor>(functor&)'
return 0;
}
Вылетает ошибка именно там где используется шаблонный класс.
Если же саму реализацию с описанием класса положить в main файл, то все прекрасно собирается.