【问题标题】:How to define a function that can return a pointer to itself?如何定义一个可以返回指向自身的指针的函数?
【发布时间】:2010-07-01 09:37:36
【问题描述】:

我想写这样的代码:

/*something*/ Fn() { ... }

int main()
{
  /*something*/ fn = Fn;
  while(fn) fn = fn();
  return 0;
}

是否有可能这样做是一种完全类型安全的方式?假设 C、C++、D、C#、Java 或任何其他静态类型语言。

【问题讨论】:

  • 它是一个非常简单的 DFA 引擎。或者使用 vector<something>,一个 NFA 引擎
  • Self referential type BTW 的可能重复项,接受的答案不是您问题的答案。看第二个答案。

标签: recursion function-pointers static-typing


【解决方案1】:

这是一个 C# 示例

delegate MyFunctionDelegate MyFunctionDelegate();

class Program
{
    static void Main(string[] args)
    {
        MyFunctionDelegate fn = FN1;
        while (fn!=null)
            fn = fn();
    }

    static MyFunctionDelegate FN1()
    {
        Console.WriteLine("FN1 called");
        MyFunctionDelegate returnDelegate = FN2;
        return returnDelegate;
    }

    static MyFunctionDelegate FN2()
    {
        Console.WriteLine("FN2 called");
        return null;
    }
}

【讨论】:

  • 是的,对不起,我在我的原始文件中提到了这一点。发布并且必须编辑格式。在我看来,它在 C/C++ 中更直接一些,但 C# 为您提供了强大的类型。在 C/C++ 中,指针可以指向任何地方。
猜你喜欢
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 2020-01-12
  • 2011-01-12
  • 2013-04-10
  • 2021-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多