【问题标题】:Can I implement a method in structure in C? [duplicate]我可以在 C 中实现结构中的方法吗? [复制]
【发布时间】:2015-12-29 22:43:45
【问题描述】:

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

struct student
{
    int name;
    int address;

    void speak() 
    {
        /* code */
    }

};

int main()
{

    //code ..

    student.speak();

}

这就是我的代码的样子。

【问题讨论】:

  • C 不支持方法符号。
  • 你的编译器告诉你什么?或者,你的 IDE?
  • 我投票结束这个问题作为离题,因为 OP 在询问之前没有使用任何侦查。
  • @Sergio - 需要由 C 完成。

标签: c oop methods


【解决方案1】:

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

struct student
{
    int name;
    int address;

    void (*speak)();
};

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

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

  student.speak();
}

【讨论】:

  • 请注意,当您使用此技巧时,您不会有 this 指针,这使得它几乎无用。
  • @FUZxxl 是的。如果需要,程序员应该直接声明并传递它。
  • 但这打破了你使用这个技巧的全部原因。
  • @FUZxxl 你可以提供“这个”所以,不,它没有。
  • @FUZxxl 它不会“破坏”,但它会让事情看起来非常难看。
【解决方案2】:

不,这是不可能的。您可以采取一些技巧来获得看起来相似的结果,但我不推荐它们。在 C 中,您只需使用一个函数:

void speak(struct student *student) {
    /* ... */
}

【讨论】:

  • 你的答案不正确。谷歌搜索“oop in C”,您甚至可以在其中找到有关该主题的 pdf。我自己已经做了很多年了。
  • @Rob 我的回答到底哪里错了?
猜你喜欢
  • 2012-09-20
  • 1970-01-01
  • 2014-12-23
  • 1970-01-01
  • 2011-03-31
  • 1970-01-01
  • 1970-01-01
  • 2015-01-13
  • 1970-01-01
相关资源
最近更新 更多