如何定义指向类成员函数的指针

时间:2013-02-19 23:20:44

标签: c++ visual-studio-2010

与C ++基础相关。 我正在创建一个单链表。

class Linked_List
{
public: Linked_List();
    ~Linked_List();
        //Member Functions
    struct node* getHead(void);
private:
    struct node{
        int d;
        struct node* next;
    }*head;
};
struct node (Linked_List::*getHead)(void)
{
    return head;
}

我收到此错误:

  

“错误C2470:'getHead':看起来像一个函数定义,但是没有参数列表;跳过明显的主体”。

我试图在谷歌搜索但没有用。任何建议PLZ。

1 个答案:

答案 0 :(得分:5)

您不需要指向成员函数的指针,您只想为该函数提供定义

Linked_List::node* Linked_List::getHead()
{ 
    return head;
}

另请注意,函数定义中不需要struct关键字,而必须使用类的名称限定结构node的名称,该类的名称在其定义的范围内

此外,不需要指定空参数列表的void关键字。因此,我建议您按如下方式重写类定义:

class Linked_List
{
private:
    struct node
    {
        int d;
        struct node* next;
    };
    node *head;
public:
    Linked_List();
    ~Linked_List();
    node* getHead();
};