0

我有一个类MyClass,其中有一个函数返回指向QString

QString* MyClass::generateName()

在其他函数中,我想在其中创建一个函数指针数组generateName()。当我写

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

我收到一个错误:

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

当我MyClass::从数组定义中删除时,它只会给我另一个关于 ISO 的错误。此外,前一个错误仍然存​​在。

我应该怎么做才能摆脱错误?

4

2 回答 2

3

首先使用函数指针,您应该使用 typedef:

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

然后,很容易定义一个数组:

funcType myArray[] = { &MyClass::generateName };
于 2012-11-26T19:58:59.517 回答
1

您正在寻找定义成员函数指针数组的语法是:

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

与普通函数指针的唯一区别是,对于成员函数指针,您必须在类型中给出类名:

ReturnType* (ClassType::*)(ArgTypes)
于 2012-11-26T19:58:27.550 回答