Цитата(Lycifer @ 21.7.2008, 12:50 ) | | Почему в конструктор нельзя передать? |
потому-что тип заранее не известен, класс должен работать с некоторым типом, и некоторым его методом, получающим ссылку на connection
Добавлено @ 13:01
| Цитата(Ulysses4j @ 21.7.2008, 12:14) | Может, можно обойтись так:
| Код | template< typename Owner, typename Conn, void (Owner::*callback)( Conn& ) > class connection { Owner owner_; public: connection(Owner& o) : owner_(o) {}
void do_work() { (owner_.*callback)(*this); } }; |
|
как выяснилось нельзя, так как теперь, что-бы инстанцировать шаблон, нужно написать что-то вроде
| Код | template< class Owner, class Param, void (Owner::*callback)( Param& ) > class connection { Owner owner_; public: connection(Owner& o) : owner_(o) {}
void do_work() { (owner.*callback)(*this); } };
class client { typedef connection<client, connection<client, ..!!WTF!!.., &client::do_work>, &client::do_work> connect; ......
|
|