template +boost::function + boost::bind + ООП
От: maxis11 Украина  
Дата: 24.08.12 20:04
Оценка:
Есть некоторый код:

template <class SomeData>
void clients_connect (SOCKET sock, sockaddr_in client_addr, SomeData dati)
{
   ... // ... - какой-то ненужный код
}

template <class SomeData>
void SomeClass::some_method (boost::function<bool (SOCKET,sockaddr_in,MData)> f,int qri, SomeData dati)
{
   ...
   main_thread=boost::thread ( boost::bind( &SomeClass::other_method, this, f, dati ) );
   ...
}

template <class SomeData>
void SomeClass::other_method (boost::function<bool (SOCKET,sockaddr_in,MData)> f, SomeData dati)
{
   ...
   f(param1,param2,dati);
   ...
}

int main()
{
   ....
   SomeClass cl;
   Data dt; //структура где хранится информация
   cl.some_method(clients_connect,100,dt); //тут ошибка
   ...
}


error: no matching function for call to 'SomeClass::some_method (<unresolved overloaded function type>, int, Data&)'
Почему то компилятор видит эту функцию как <unresolved overloaded function type>, наверно из-за template. Как можно сказать компилятору, что это SomeClass::some_method (boost::function<bool(unsigned int, sockaddr_in, SomeData)>, int, SomeData) [with SomeData = Data]|. Метод с заменой template на void* не предлагать.
шаблоны template c++ boost::function boost::bind ооп адская смесь
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.