好吧,
我将typedef函数指针设为:
typedef string(*t_arr[5])();
然后我在课堂上创建函数:
void initStringFunctionPointer(t_arr t_err);
然后我声明为:
void Register::initStringFunctionPointer(t_arr t_err)
{
t_err[0] = &getName;
t_err[1] = &getSurname;
t_err[2] = &getUsername;
t_err[3] = &getPassword;
t_err[4] = &getEmail;
}
但所有行都会出现此错误:
C:\Qt Projects\base\ClassProject_tmp\goinlib.cpp:20: error: ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say '&Register::getName' [-fpermissive]
t_err[0] = &getName;
^
我不知道该怎么做,有什么想法吗?
编辑:
它工作,静态或做类型成功,谢谢。
答案 0 :(得分:0)
它在错误消息中告诉您:
Say '&Register::getName'
一旦你这样做,你可能会发现它无论如何都是非法的,因为你不能在常规函数指针中存储指向成员函数的指针。因此,您需要更改typedef,否则请getName()
,其余为静态。要更改typedef,请尝试以下操作:
typedef string(Register::*t_arr[5])();
希望这是正确的,阵列的东西让我有点不确定;您可以考虑将数组部分保留在基本typedef之外并将其添加到其他地方(在第二个typedef或使用地点)。