我有一个这样的结构(我将C struct
编码为C ++ class
来演示我在想什么;但我在C中工作。):
//This is a source file
typedef struct _MyType
{
void test() { printf("works!"); }
}MyType;
但是我想要定义我的结构:(那不起作用)
//This is a header file
typedef struct _MyType
{
void test();
}MyType;
//This is a source file
MyType::test() { printf("works!"); }
我已经尝试了更多的东西,但我不能再做了。 (我想使用structs
的{{1}}
如何在C中实现这种类似OOP的分离?
答案 0 :(得分:3)
您无法在C编程中定义struct
内的函数。
但是你可以在struct
这样的事情: -
typedef struct{
void (*test)();
}MyType;
void test(MyType* self) { printf("works!"); }
int main()
{
MyType *m =malloc(sizeof(MyType));
m->test=test;
m->test(m);
free(m);
}