【问题标题】:Why assignment to the function type gives an error?为什么分配给函数类型会出错?
【发布时间】:2019-04-27 13:55:52
【问题描述】:

我正在阅读this answer - about function name as pointer,在帖子中作者说为什么它没有被编译是未知的,这是我的问题,我想知道为什么。 (请不要激怒作者,否则我会生气,谢谢。)

那么如何给f赋值呢?

这是直接从那里复制的代码:

typedef void (*pointer)(void);
typedef void (function)(void);

void foo(void){}

int main()
{
    pointer p;
    function f;

    p = foo; //compiles
    p();

    f = foo; //does not compile
    f();
}

错误信息是:

error: cannot convert ‘void()’ to ‘function {aka void()}’ in assignment

【问题讨论】:

    标签: c++ function


    【解决方案1】:

    由于function 被定义为函数类型,所以当您声明function 类型的“变量”时,它实际上声明的是函数,而不是变量。无法分配函数,因此这种行为非常合理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-30
      • 2021-04-27
      • 1970-01-01
      • 1970-01-01
      • 2019-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多