我有一个类派生自包含指向另一个类对象的指针的集合。基本上它看起来像这样:
class connectionSLOT: private std::set<connectionSLOT*>
{
...
};
也许它非常简单并且可以很好地表示(有向)图。我的类还包含一些简单的方法,如 connect()、disconnect() 等,它们都期望对象指针作为参数,并返回这样的指针。(即它们的声明仅在名称上有所不同)例如:
connectionSLOT* connectionSLOT::connect(connectionSLOT *A)
{
insert (A); return A;
}
或者:
connectionSLOT* connectionSLOT::disconnect(connectionSLOT *A)
{
erase(A); return this;
}
所以,我的问题是:如何创建一个新方法,将这些函数应用到对象本身而不是集合中包含的所有对象(即包含在调用对象中)?
我想要这样的东西:
connectionSLOT* new_method( 'passing a method (and its argument) ' )
{
for(it=begin();it!=end();++it) 'execute the method on (*it)' ;
return something;
}
或许,它将应用于将所有相邻点连接到某个顶点。但是因为 new_method() 本身也是一个合适的函数,所以它也可以被传递:
int main()
{
// ... here declaring some objects and connection amongst them...
A->new_method( new_method( disconnect(B) ) ) ;
/* calling new_method() recursively to disconnect all the vertices from B which ones are
reachable from A in two steps */
...
}
我希望,有可能以某种方式做到。(语法基本上不重要)感谢提供任何建议。
罗伯特