我可以在C中实现结构中的方法吗?

Cha*_*hna 0 c oop methods

我想用C语言实现方法.我知道C语言不支持面向对象编程.但有办法吗?还是不能做到?因为它需要由C完成.

struct student
{
    int name;
    int address;

    void speak() 
    {
        /* code */
    }

};

int main()
{

    //code ..

    student.speak();

}
Run Code Online (Sandbox Code Playgroud)

这就是我的代码的样子.

Mat*_*att 6

您可以通过使用指向函数的指针来部分模拟它.

struct student
{
    int name;
    int address;

    void (*speak)();
};

void speak_func() {/*...*/}

int main()
{
  //code ..
  struct student student;
  student.speak = speak_func;

  student.speak();
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,当您使用此技巧时,您将不会拥有"this"指针,这使得它几乎无用. (2认同)