В c ++ вы можете связывать функции в цепочку, возвращая ссылку на объект, например function1().function2().function3()
.
Есть ли способ сделать это в c? может быть, с помощью указателей на функции?
Я сделал небольшой пример, это был единственный способ, о котором я мог думать.
#include <stdio.h>
#include <stdlib.h>
struct date
{
unsigned day;
struct date *(*func_print)(struct date*);
struct date *(*func_assign)(struct date*,unsigned);
};
struct date *create_date(void)
{
struct date *obj = malloc(sizeof(struct date));
return obj ? obj : NULL;
}
struct date *assign(struct date *this, unsigned value){
this->day = value;
return this;
}
struct date* print(struct date *this){
printf("%d\n",this->day);
return this;
}
int main()
{
struct date *my = create_date();
my->func_print = print;
my->func_assign = assign;
my->func_assign(my,20)->func_print(my);
free(my);
}