【问题标题】:C - How to pass _self into a function thats assigned to a pointerC - 如何将 self 传递给分配给指针的函数
【发布时间】:2020-12-07 19:12:51
【问题描述】:

我可能搞混了,因为我是一名 OO 开发人员。我试图让几个实例调用一个通用方法。

我想以某种方式在分配的函数中引用调用者...

标题

typedef struct _Part Part;
struct _Part {
  void (*move)();
}

代码

void move(Part p) {
}

void main() {
  Part part1;
  part1.move = move(part1); <-- Won't compile

  part1.move();
}

有什么方法可以让这项工作发挥作用,还是我必须停止像 OO 开发人员那样思考,直接调用 move 方法,传入实例?

【问题讨论】:

    标签: c struct function-pointers declaration implicit-conversion


    【解决方案1】:

    像这样声明结构

    typedef struct _Part Part;
    struct _Part {
      void (*move)( Part);
    };
    

    然后写

    part1.move = move;
    

    函数指示符被隐式转换为指向函数的指针。

    然后写

    part1.move( part1 );
    

    【讨论】:

    • 打电话给move (part1不是更好吗?我试图避免传入变量
    • @TedTrippin 您可以直接调用该函数。但在这种情况下,结构的数据成员是多余的。
    • 我知道,因此是我最初的问题。如果无法实现我的目标,我将删除它并直接调用它。我只是太习惯于 OO 世界了。
    猜你喜欢
    • 2014-07-08
    • 2013-10-30
    • 2019-08-14
    • 2019-10-19
    • 2016-12-03
    • 2011-05-19
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多