我用C实现了一个类似于C中的类的数据结构。
但是我发现每当类包含成员函数时,那么我每次都要手动将类成员函数指向代码中的特定函数。
而在C中,不需要将成员函数指向任何人,因为C++直接在类中实现成员函数。
就像这样:
C:
typedef struct {
// declare func as pointer to function returning void
void (*func)();
} ClassTest;
// Example Function
void func_1()
{
printf("test done.\n");
}
int main()
{
ClassTest obj;
// You must manually point the function pointer in
// the structure body to this function.
obj.func = func_1;
obj.func(); // call function
return 0;
}
C++
// Classes with the same functionality in C++
class ClassTest {
public:
void func() {
printf("test done.\n");
}
};
ClassTest obj = ClassTest();
obj.func();
有没有一种方法可以让C像C++一样默认初始化成员函数,而不必手动指向它们?
3条答案
按热度按时间7kjnsjlb1#
通过使用“模板”对象,初始化
test_ctx
的每个示例变得容易得多。如果你曾经更新过
test_ctx
类型(也许是通过添加更多的函数),你只需要更新模板,对象的所有其他示例(下面的obj
和objB
)都会自动更新,因为它们都是从模板中复制的。2ic8powd2#
使用功能?
就像这样:
0lvr5msh3#
除了“template object”和“init function”,你还可以定义一个宏:
然后像这样使用它: