开发者

What elegant method callback design should be used?

I'm surprised this question wasn开发者_如何学运维't asked before on SO (well, at least I couldn't find it).

Have you ever designed a method-callback pattern (something like a "pointer" to a class method) in C++ and, if so, how did you do it ?

I know a method is just a regular function with some hidden this parameter to serve as a context and I have a pretty simple design in mind. However, since things are often more complex than they seem to, I wonder how our C++ gurus would implement this, preferably in an elegant and standard way.

All suggestions are welcome !


boost::function for single callback, boost::signal or boost::signals2 when more than one callbacks can be registered, using boost::bind to bind member methods (or adapting the signatures in different ways).

If you have access to a compiler with C++0x/C++11 support it may have std::function and std::bind that are the new standard version of boost::function and boost::bind


Isn't boost::function (in conjunction with boost::bind) elegant enough? This will also keep you away from nasty (yet standard-conforming) implementation details like pointers to members being larger than a void*, which was a problem in a callback library for an older Windows CE system. I'd rather use a well-known library than having to deal with these problems myself.


A good introduction into callbacks with C++ you can find here. I used this paper as base for an implementation when boost was not an option.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜