`
rappy
  • 浏览: 42779 次
  • 性别: Icon_minigender_1
  • 来自: 天涯海角
文章分类
社区版块
存档分类
最新评论

C模拟类

阅读更多
先前搞Java,现转C,突然很想念OO,今天用C搞了下。
#include <stdio.h>

//模拟类
typedef struct man
{
	char *name;
	void sleep(int time)
         {
		printf("%s sleep for %d minutes.\n", this->name, time);
	};
	void (*laugh)(char *name, ...);
}MAN;

void laugh(char *name, ...);

void main(void)
{	
	MAN lili;
	lili.name = "Lili";
	lili.sleep(9);
	lili.laugh = &laugh;

	lili.laugh("Lucy", 4);
}

void laugh(char *name, ...)
{
	va_list args;
	args = (va_list)&name + sizeof(name);

	printf("%s laugh for %d minutes!\n", name, (int)args[0]);
}

如果换成如下结构体,laugh函数参数换成全动态的。
typedef struct man
{
	char *name;
	void sleep(int time)
         {
		printf("%s sleep for %d minutes.\n", this->name, time);
	};
	void (*laugh)(...);
}MAN;

这函数要如何实现?
void laugh(...)
{
	va_list args;
	args = ???;//如何赋值?

	printf("%s laugh for %d minutes!\n", (char*)args[0], (int)args[1]);
}

这函数里要如何取到那个args?
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics