不可以,但可以用函式指標實現。比如下面實現的輸出vnode中的字串。
struct vnode{
char *s;
void (*print_s) (struct vnode *vnd);
void (*init)(struct vnode *vnd, const char *s);
};
void vnode_print_s(struct vnode *vnd){
printf("%s", vnd->s);
} void vnd_init(struct vnode *node, const char *s) { node->init = vnd_init; node->s = (char*)malloc(strlen(s)+1); strcpy(node->s, s); node->print_s = vnode_print_s; } void vnd_destroy(struct vnode *node){ if(node->s){ free(node->s); } } int main() { struct vnode vnd; char s[] = "Hello\n"; vnd_init(&vnd,s); vnd.print_s(&vnd); vnd_destroy(&vnd); return 0; }
不可以,但可以用函式指標實現。比如下面實現的輸出vnode中的字串。
struct vnode{
char *s;
void (*print_s) (struct vnode *vnd);
void (*init)(struct vnode *vnd, const char *s);
};
void vnode_print_s(struct vnode *vnd){
printf("%s", vnd->s);
} void vnd_init(struct vnode *node, const char *s) { node->init = vnd_init; node->s = (char*)malloc(strlen(s)+1); strcpy(node->s, s); node->print_s = vnode_print_s; } void vnd_destroy(struct vnode *node){ if(node->s){ free(node->s); } } int main() { struct vnode vnd; char s[] = "Hello\n"; vnd_init(&vnd,s); vnd.print_s(&vnd); vnd_destroy(&vnd); return 0; }