2011-04-10 100 views
4

我期待在C++代碼看起來像這樣的類型的要求:什麼是此模板函數

template<class A> 
bool foo(int A::*) 
{ /*blah*/ } 

什麼是int A::*結構?對A型號有什麼要求?

非常感謝!

+0

這是一個很好的長期SO線程在這個確切的主題:http://stackoverflow.com/questions/670734/c-pointer-to-class-data-member – 2011-04-10 07:04:22

回答

3

int A::*是指向A類型的int數據成員的指針。例如,給定類型:

struct Foo { int i; }; 
struct Bar { double d; }; 
  • int Foo::*是指向Foo類型的int數據成員,其僅有效的值都爲空和Foo::i
  • int Bar::*的地址是一個指向int數據成員Bar,其唯一有效值爲空,因爲Bar不包含int數據成員

對類型A強加的唯一要求是它不是原始類型,因爲原始類型顯然不能具有數據成員。