2012-11-26 187 views
0

轉換我有一個類MyClass,其中有一個函數返回一個指針QString指針在初始化

QString* MyClass::generateName() 

在其它功能我想使一個函數指針陣列,以在它generateName()。當我寫

QString* (*array[1])() = {&MyClass::generateName}; 

我得到一個錯誤:

cannot convert ‘QString* (MyClass::*)()’ to ‘QString* (*)()’ in initialization 

當我從數組定義中刪除MyClass::,只給了我有關ISO另一個錯誤。此外,前者的錯誤依然存在。

我該怎麼做才能擺脫錯誤?

+2

閱讀有關成員函數指針。 –

回答

3

先用函數指針,你應該使用typedef:

typedef QString* (MyClass::* funcType)(); 

然後,一個數組很容易定義:

funcType myArray[] = { &MyClass::generateName }; 
1

你正在尋找定義的成員函數指針數組的語法是:

QString* (MyClass::*array[1])() = {&MyClass::generateName}; 

正常的函數指針的唯一區別是,對於一個成員函數的指針,你必須在給類名類型:

ReturnType* (ClassType::*)(ArgTypes)