2012-02-09 231 views
1

我是通過作用於元組升壓文檔閱讀和整個以下有效元組實例(A,B和C是一些用戶定義的類)傳來:這些類型是什麼?

tuple<A, int(*)(char, int), B(A::*)(C&), C> 

我不明白是什麼類型的公司第二屆和第三個參數。 int(*)(char, int)B(A::*)(C&)類型究竟是什麼?

+2

http://www.unixwiz.net/techtips/reading-cdecl.html這是C; C++增加了指向成員和模板的類型,但這個想法仍然存在。閱讀(但要注意人們不會在生產代碼中使用它,有'typedef'來簡化這種聲明)。 – Kos 2012-02-09 13:12:37

回答

7
int(*)(char, int) 

是指向一個函數接受charint作爲參數並返回一個int

B(A::*)(C&) 

是指向一個成員函數的對象A上,返回B並接受向C參考作爲參數。

+0

謝謝,我不知道第二個意思是什麼。 +1 – 2012-02-09 13:04:52

2

int(*)(char, int)是一個指針,它指向返回int和花費charint作爲參數的函數。

0
B(A::*)(C&) 

是指向成員函數(的A構件),其採用一個C&並返回一個B

實施例:

class B{ 
public: 
/*empty class*/ 
}; 
class A{ 
public: 
B DoSomething(C& input){ 
return B; 
} 

} 
int main(){ 
auto G = &A::DoSomething; 
} 

G類型是B(A::*)(C&)

2
int(*)(char, int) 

功能指針(char, int)並返回int

B(A::*)(C&) 

一個指針,指向的A服用C&返回B成員函數。

0

B(A::*)(C&)是指向A的成員函數,其參數爲C並返回B對象。

陸先生已經回答了int(*)(char, int)