We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
看了下你的源代码,写的很好,但是没有体现面向对象的思想,C为什么要面向对象?Linux内核就是最好的例子,Linux内核尽管是C和汇编写的,但是里面却大量使用了面向对象的思想,要不然它的代码怎么会写的如此精妙,同一份源代码能够支持几十种架构
另外你的API应该和C++ STL要类似,这样可以减少开发者的学习成本和更方便的使用,比如说C++的list里有哪些方法,你的libcstl应该提供对应的方法
之前我自己也封装过,但是对于自定义的类型处理不好,所以弃坑了......
#include <stdio.h> #include <stdlib.h> #include <stdbool.h>
// list简单封装...
typedef void* Type;
typedef struct Node{ int data; struct Node *next; struct Node *prev; }Node;
// 把所有的方法都封装在list里面,类似于class typedef struct list{ void (*add) (Node *head,int data); void (*insert) (Node *head,int data,int pos); bool (*empty) (Node *head); // ... }list;
void list_add(Node *head,int data){ printf("data = %d\n",data); }
bool list_empty(Node *head){ printf("list is empty...\n"); return false; }
// 这个方法返回的是一个list结构体 list create_list(Type T){ list m_list = { .add = list_add, .empty = list_empty }; // 进行链表的一些初始化,构造头节点... // ... return m_list; }
// 这个方法返回的是一个list结构体指针,类似于C++的new list* new_list(Type T){ list p_list = (list)malloc(sizeof(list)); p_list->add = list_add; p_list->empty = list_empty; // 进行链表的一些初始化,构造头节点... // ... return p_list; }
/* main function */ int main(int argc,char **argv){ // 构造list对象,通过对象调用方法,这样就可以达到类似面向对象的效果 list mlist = create_list(NULL); mlist.add(NULL,666);
list *plist = new_list(NULL); plist->empty(NULL); return 0;
}
The text was updated successfully, but these errors were encountered:
No branches or pull requests
看了下你的源代码,写的很好,但是没有体现面向对象的思想,C为什么要面向对象?Linux内核就是最好的例子,Linux内核尽管是C和汇编写的,但是里面却大量使用了面向对象的思想,要不然它的代码怎么会写的如此精妙,同一份源代码能够支持几十种架构
另外你的API应该和C++ STL要类似,这样可以减少开发者的学习成本和更方便的使用,比如说C++的list里有哪些方法,你的libcstl应该提供对应的方法
之前我自己也封装过,但是对于自定义的类型处理不好,所以弃坑了......
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
// list简单封装...
typedef void* Type;
typedef struct Node{
int data;
struct Node *next;
struct Node *prev;
}Node;
// 把所有的方法都封装在list里面,类似于class
typedef struct list{
void (*add) (Node *head,int data);
void (*insert) (Node *head,int data,int pos);
bool (*empty) (Node *head);
// ...
}list;
void list_add(Node *head,int data){
printf("data = %d\n",data);
}
bool list_empty(Node *head){
printf("list is empty...\n");
return false;
}
// 这个方法返回的是一个list结构体
list create_list(Type T){
list m_list = {
.add = list_add,
.empty = list_empty
};
// 进行链表的一些初始化,构造头节点...
// ...
return m_list;
}
// 这个方法返回的是一个list结构体指针,类似于C++的new
list* new_list(Type T){
list p_list = (list)malloc(sizeof(list));
p_list->add = list_add;
p_list->empty = list_empty;
// 进行链表的一些初始化,构造头节点...
// ...
return p_list;
}
/* main function */
int main(int argc,char **argv){
// 构造list对象,通过对象调用方法,这样就可以达到类似面向对象的效果
list mlist = create_list(NULL);
mlist.add(NULL,666);
}
The text was updated successfully, but these errors were encountered: