Skip to main content
 首页 » 编程设计

c++之为什么我不能将函数分配给函数指针

2024年02月20日13TianFang

在做作业时,我决定使用函数指针作为回调函数。我不打算在这里发布整个作业,因为它太大了。在这里,我编写了一些小测试代码来说明我遇到的错误。

#include <iostream> 
 
void function() 
{ 
    std::cout << "test"; 
} 
 
int main() 
{ 
    void* functionPtr(int) = function; 
    functionPtr(); 
} 

我收到错误 C2059:语法错误:此处为“=”void* functionPtr(int) = function;。如果我将鼠标悬停在 = 符号上,它会显示下一个:“函数 functionPtr 无法初始化”。如果我将其更改为...

    void* functionPtr(); 
    functionPtr = function; 

...我将收到错误 C2659:“=”:函数作为左操作数。 我使用函数指针的方式是否错误? 顺便说一句,我使用 Visual Studio 2019。 感谢您的帮助。

请您参考如下方法:

这不是正确的语法。您声明一个函数,而不是函数指针。

以下是函数指针的声明方式:

void(*functionPtr)(int); 

正如您所注意到的,星星位于名称旁边。如果没有括号,星号将应用于返回类型而不是名称。

或者使用尾随返回类型:

auto(*functionPtr)(int) -> void; 

此外,名为 function 的函数不采用 int 作为参数。所以应该是这样的:

void(*functionPtr)() = function;