我正在尝试在结构内部创建函数,到目前为止,我有以下代码:
typedef struct client_t client_t, *pno;
struct client_t
{
pid_t pid;
char password[TAM_MAX]; // -> 50 chars
pno next;
pno AddClient()
{
/* code */
}
};
int main()
{
client_t client;
//code ..
client.AddClient();
}
错误:client.h:24:2:错误:预期在“{” token 之前的“:”,“,”,“;”,“}”或“属性”。
哪个是正确的方法?
最佳答案
它不能直接完成,但是您可以使用函数指针并显式传递“this”参数来模拟同一件事:
typedef struct client_t client_t, *pno;
struct client_t
{
pid_t pid;
char password[TAM_MAX]; // -> 50 chars
pno next;
pno (*AddClient)(client_t *);
};
pno client_t_AddClient(client_t *self) { /* code */ }
int main()
{
client_t client;
client.AddClient = client_t_AddClient; // probably really done in some init fn
//code ..
client.AddClient(&client);
}
事实证明,这样做并不能真正给您带来很多好处。这样,您将不会看到以这种样式实现的许多C API,因为您可能只需调用外部函数并传递实例即可。