0
我想要做以下事情。說我有這樣的:從另一個函數創建一個函數(更少的參數)
void f(const char* c) {
// Do stuff with c
}
void g(const char* c, int x, int y) {
// Do other stuff
}
我想要做的是創建g的函數,它接受一個const char * C。即:
int a = 5;
int b = 9;
expression(g, a, b)("Hi!");
優選地,expression(g)
也可以存儲在變量中。我不知道如何聲明這個變量。
我已經嘗試使用boost :: bind;然而boost :: bind返回一個boost :: function,我想要一個普通的C++函數指針。此外,我還看到了這個主題: demote boost::function to a plain function pointer 而前兩個解決方案都不會起作用。我的函數f被約束爲只有一個參數(無void * user_data指針)。我需要這個的原因是我有第三個函數h,它接受一個參數的函數,即一個const char *並對它進行處理。我希望能夠以g的形式傳遞給h。
h(f) // Valid
h(expression(g, a, b)) // Would like for this to be valid, too
我不確定這是否可能,但如果是,請告訴:)。
我已經嘗試綁定,但就像我說的bind :: boost返回一個boost :: function。我想要的是一個正常的C++函數。 – Toan 2013-02-14 01:48:47
@Toan:新增... – 2013-02-14 01:50:31
感謝您的快速回復。我應該更清楚。我希望參數g(你的例子中的5和9)也是參數。也就是說, void t(int a,int b)返回表達式(g,a,b); //返回一個接受const char的函數* } t(3,5)(「Hello」); // g(「Hello」,3,5); – Toan 2013-02-14 02:01:22