指针在初始化中转换

时间:2012-11-26 19:50:44

标签: c++ qt casting

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

QString* MyClass::generateName()

在其他函数中,我想在其中创建一个带有generateName()的函数指针数组。我写的时候

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

我收到错误:

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

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

我该怎样做才能摆脱错误?

2 个答案:

答案 0 :(得分:3)

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

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

然后,数组很容易定义:

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

答案 1 :(得分:1)

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

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

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

ReturnType* (ClassType::*)(ArgTypes)