C++の関数に関する2つの質問があります。参照として渡すときに関数を動的に宣言でき、後で使用する関数を格納することは可能ですか?C++:動的関数とストア関数を渡しますか?
動的機能に合格する?
私の質問は完全に透明文言が、何私が意味することは、かなり頻繁にのようなコードを参照するJavaであることはできません。
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("...");
}
});
またはJavaScript:Cにおけるながら
$(".class").each(function()
{
alert("...");
});
を++あなたは以下に限定されています:
void print()
{
std::cout << "..." << std::endl;
}
void func(void (&f)())
{
f();
}
// ...
func(print);
void func(void (&f)())
{
f();
}
// ...
func(void f(){ ... });
これはC++の単なる制限ですか?
関数を格納していますか?
似たような機能を後で呼び出すコンテナに格納することは可能ですか?アイデアの一例(動作しない)である:イベントシステム上で作業しているとき
std::vector< void() > storage;
void callMeLater(void (&f)())
{
storage.push_back(f);
}
void popFunction()
{
void f() = storage.pop_back();
f();
}
これらのアイデアは、両方の私のTimerオブジェクトも遅延機能だけでなく、イベントのコールを処理できるかどうかを確認するために、私のところに来ました。 C++コードでこれを使用したことは一度も見たことがないので、可能だとは思っていませんが、そうでなければ表示されるのが大好きです!
ありがとうございます。現在の標準で
ああ、すごいです。それはまさに私が探していたものです。有難うございます。 – ssell