奉献给各位一个小东西:class Gotter,它从一个异质容器里找到你要的那个东西,代码如下:
#include
#include
using std::vector;
using std::binary_function;
template >
struct Gettor:public binary_function
{
result_type operator()(Container& C)const
{
result_type result;
for(Container::iterator CI = C.begin();
CI != C.end(); ++CI)
if( result = dynamic_cast(*CI) )
return result;
return 0;
}
};
如果Container里存放的是Base*, 并且Base有至少一个虚函数,那么你就可以用Gotter来找到Derived.
这样一个小东西做起来很容易,但是却十分有用,将它加如某个通用库一点也不过分,但是stl和loki
都没有,我孤陋寡闻,没见过boost,不知道boost有没有类似的东西。它肯定被某些人实做过,我不知道
而已,但是我还是乐于将它贴出来和大家分享。