我有一个类MyClass
,其中有一个函数返回指向QString
的指针:
QString* MyClass::generateName()
在其他函数中,我想在其中创建一个带有generateName()
的函数指针数组。我写的时候
QString* (*array[1])() = {&MyClass::generateName};
我收到错误:
cannot convert ‘QString* (MyClass::*)()’ to ‘QString* (*)()’ in initialization
当我从数组定义中删除MyClass::
时,它只会给我一个关于ISO的错误。此外,前一个错误仍然存在。
我该怎样做才能摆脱错误?
答案 0 :(得分:3)
首先使用函数指针,你应该使用typedef:
typedef QString* (MyClass::* funcType)();
然后,数组很容易定义:
funcType myArray[] = { &MyClass::generateName };
答案 1 :(得分:1)
您正在寻找的用于定义成员函数指针数组的语法是:
QString* (MyClass::*array[1])() = {&MyClass::generateName};
普通函数指针的唯一区别是对于成员函数指针,您必须在类型中给出类名:
ReturnType* (ClassType::*)(ArgTypes)