有没有可能实现这样的设计?——关于一个类的接口设计有关问题
有没有可能实现这样的设计?——关于一个类的接口设计问题
大家好。
我在尝试封装一个比较通用的socket类。实际上,服务器和客户端通信,主要就是根据不同的命令执行不同的操作而已,那么我就想开放一个接口,让这个socket类的用户能把用户自己的类的成员函数指针设进来,然后根据不同的命令执行不同的函数。
因为想把这个socket类做得更通用一些,所以就希望无论用户的类是什么类,都能把他们各自的类的成员函数指针设进来。请问有没有办法做到?
我一开始尝试用模板,但是遇到了问题——
template <class T>
typedef DWORD (T::*MEMFUNCPTR)(void);
class CMySocket
{……
编译不通过。貌似模板不允许这样用。
请问大家,有没有什么办法可以达到这个设计的目的呢?谢谢!
------解决方案--------------------
则个贴怎么没人回,我也想知道呢 呵呵
------解决方案--------------------
有啊,boost::function+bind库。
------解决方案--------------------
STL有mem_fun
------解决方案--------------------
把typedef放到类里面:
template <class T>
class CMySocket
{
typedef DWORD (T::*MEMFUNCPTR)(void);
……
大家好。
我在尝试封装一个比较通用的socket类。实际上,服务器和客户端通信,主要就是根据不同的命令执行不同的操作而已,那么我就想开放一个接口,让这个socket类的用户能把用户自己的类的成员函数指针设进来,然后根据不同的命令执行不同的函数。
因为想把这个socket类做得更通用一些,所以就希望无论用户的类是什么类,都能把他们各自的类的成员函数指针设进来。请问有没有办法做到?
我一开始尝试用模板,但是遇到了问题——
template <class T>
typedef DWORD (T::*MEMFUNCPTR)(void);
class CMySocket
{……
编译不通过。貌似模板不允许这样用。
请问大家,有没有什么办法可以达到这个设计的目的呢?谢谢!
------解决方案--------------------
则个贴怎么没人回,我也想知道呢 呵呵
------解决方案--------------------
有啊,boost::function+bind库。
------解决方案--------------------
STL有mem_fun
------解决方案--------------------
把typedef放到类里面:
template <class T>
class CMySocket
{
typedef DWORD (T::*MEMFUNCPTR)(void);
……