Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 初始化中的指针转换_C++_Qt_Casting - Fatal编程技术网

C++ 初始化中的指针转换

C++ 初始化中的指针转换,c++,qt,casting,C++,Qt,Casting,我有一个类MyClass,其中有一个函数返回指向QString的指针: QString* MyClass::generateName() 在另一个函数中,我想创建一个包含generateName()的函数指针数组。当我写作时 QString* (*array[1])() = {&MyClass::generateName}; 我得到一个错误: cannot convert ‘QString* (MyClass::*)()’ to ‘QString* (*)()’ in initial

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

QString* MyClass::generateName()
在另一个函数中,我想创建一个包含
generateName()
的函数指针数组。当我写作时

QString* (*array[1])() = {&MyClass::generateName};
我得到一个错误:

cannot convert ‘QString* (MyClass::*)()’ to ‘QString* (*)()’ in initialization
当我从数组定义中删除
MyClass::
时,它只会给我关于ISO的另一个错误。此外,前一个错误仍然存在


我应该怎么做才能消除错误?

定义成员函数指针数组的语法是:

QString* (MyClass::*array[1])() = {&MyClass::generateName};
与普通函数指针的唯一区别在于,对于成员函数指针,必须在类型中指定类名:

ReturnType* (ClassType::*)(ArgTypes)

定义成员函数指针数组所需的语法如下:

QString* (MyClass::*array[1])() = {&MyClass::generateName};
与普通函数指针的唯一区别在于,对于成员函数指针,必须在类型中指定类名:

ReturnType* (ClassType::*)(ArgTypes)

首先,对于函数指针,您应该使用typedefs:

typedef QString* (MyClass::* funcType)();
因此,数组很容易定义:

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

首先,对于函数指针,您应该使用typedefs:

typedef QString* (MyClass::* funcType)();
因此,数组很容易定义:

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

了解成员函数指针。了解成员函数指针。