C ++函数指针作为类成员

时间:2014-09-13 12:09:14

标签: c++ function-pointers

好吧,

我将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;
                 ^

我不知道该怎么做,有什么想法吗?

编辑:

它工作,静态或做类型成功,谢谢。

1 个答案:

答案 0 :(得分:0)

它在错误消息中告诉您:

Say '&Register::getName'

一旦你这样做,你可能会发现它无论如何都是非法的,因为你不能在常规函数指针中存储指向成员函数的指针。因此,您需要更改typedef,否则请getName(),其余为静态。要更改typedef,请尝试以下操作:

typedef string(Register::*t_arr[5])();

希望这是正确的,阵列的东西让我有点不确定;您可以考虑将数组部分保留在基本typedef之外并将其添加到其他地方(在第二个typedef或使用地点)。