gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 03:28:58 24 4
gpt4 key购买 nike

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

#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;

关于c++ - 为什么我不能将函数分配给函数指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58699204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com