如何在头文件中构造函数,在源代码中定义

时间:2013-08-18 21:04:15

标签: c oop struct header-files

我有一个这样的结构(我将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的分离?

1 个答案:

答案 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);
}