为函数指针编写一个getter

时间:2010-03-26 13:27:30

标签: c encapsulation

我有以下问题:

“list.c”

struct nmlist_element_s {
    void *data;
    struct nmlist_element_s *next;
};

struct nmlist_s {
    nmlist_element *head;
    nmlist_element *tail;
    unsigned int size;
    void (*destructor)(void *data);
    int (*match)(const void *e1, const void *e2);
};

/*** Other code ***/

从结构中返回'析构函数'的函数的签名是什么? 例如,返回“ size ”的函数的签名是:

unsigned int nmlist_size(nmlist *list);

'析构函数'将是什么情况。

2 个答案:

答案 0 :(得分:7)

这将有效:

typedef void (*Destructor)(void *data);
Destructor getDestructor();

答案 1 :(得分:3)

一般表格:

void (*get_destructor())(void *data);

确切的形式取决于get_destructor应该采用的参数。如果您只是从struct nmlist_s的实例返回析构函数指针,那么它将看起来像

void (*get_destructor(struct nmlist_s list))(void *data);