2016-08-12 98 views
-4

我遇到了使用std :: function方法的C++ 11風格的函數指針。以下場景可以很好地使用舊函數指針方法,但是會失敗,並且會失敗。使用std :: function函數返回

#include <functional> 
using namespace std; 
function<int(int,int)> arithmeticFcn; 

int add(int x,int y) 
{ 
return x + y; 
} 

arithmeticFcn getOperation(char op) 
{ 
switch (op) { 
case '+': 
return add; 
break; 
default: 
return add; 
break; 
} 
} 

int main() 
{ 
int x = 10,y = 20; 
char op1; 
cin >> op1; 
arithmeticFcn Fcn = getOperation(op1); 
cout << Fcn(x,y) << endl; 
return 0; 
} 

我做錯了什麼?

+1

'arithmeticFcn'沒有指定類型。 –

+0

'return;打破;'? 'break'永遠不會到達。 –

+3

_「以下情況[..]以新thingie失敗。」_這不是一個可接受的問題描述。 –

回答

2

我要出去肢體和猜你以前寫的:

typedef int arithmeticFcn(int, int); 

,這稱爲函數指針。

它不是一個函數指針。它從來不是一個函數指針。您製作了arithmeticFcn函數類型,這是您如何使用它的方法,如上所述。

但在這裏:

function<int(int,int)> arithmeticFcn; 

沒有創建一個類型。您正在創建一個函數,稱爲arithmeticFcn

我想你的意思是:

typedef function<int(int,int)> arithmeticFcn; 
相關問題