1
我有两个有关C++中的函数的问题:当您将它作为参考传递时,是否可以动态地声明一个函数?是否可以存储稍后使用的函数?C++:传递动态函数和存储函数?
传递动态函数?
我的问题可能不会措辞十分清楚,但我的意思是在Java中,你经常看到的代码看起来像:
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("...");
}
});
或JavaScript:
$(".class").each(function()
{
alert("...");
});
而在C++您仅限于:
void print()
{
std::cout << "..." << std::endl;
}
void func(void (&f)())
{
f();
}
// ...
func(print);
并且不能做类似的事情
void func(void (&f)())
{
f();
}
// ...
func(void f(){ ... });
这是C++的限制吗?
存储函数?
是否有可能将类似的函数存储到稍后调用的容器中? (不工作)的想法的一个例子是:事件系统上工作时,要看看我的Timer对象还可以处理延迟功能,以及事件调用
std::vector< void() > storage;
void callMeLater(void (&f)())
{
storage.push_back(f);
}
void popFunction()
{
void f() = storage.pop_back();
f();
}
这些想法都来找我。正如我从未见过这些在任何C++代码中使用过的那样,我怀疑它们是可能的,但愿意以其他方式显示!
谢谢。
哦,哇。这正是我所期待的。谢谢你。 – ssell 2012-02-15 16:21:50