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 };
了解成员函数指针。了解成员函数指针。