gpt4 book ai didi

c++ - 参数太多,函数指针中的参数太少

转载 作者:行者123 更新时间:2023-11-27 23:22:46 24 4
gpt4 key购买 nike

我正在尝试从基础开始学习 C++,并且一直在研究函数指针。考虑这段代码:

#include <iostream>
#include <string>
#include <vector>

bool print(std::string);
bool print(std::string a)
{
std::cout << a << std::endl;
return true;
}

bool call_user_function(bool(std::string), std::vector<std::string>);
bool call_user_function(bool(*p)(std::string), std::vector<std::string> args) {
if (args.size() == 0)
return (*p)(); (*)
else if (args.size() == 1)
return (*p)(args[0]);
else if (args.size() == 2)
return (*p)(args[0], args[1]); (**)
}

int main(int argc, char** argv)
{
std::vector<std::string> a;
a[0] = "test";
call_user_function(print, a);
// ok
return 0;
}

它给了我:

main.cpp:28 (*): error: too few arguments to function

main.cpp:32 (**): error: too many arguments to function

我做错了什么?

最佳答案

pbool(*)(std::string) 类型。这意味着它是一个指向函数的指针,该函数具有 std::string 类型的单个参数并返回 bool

p可以指向print,因为print的类型匹配:它是一个函数,有一个类型的参数>std::string 并返回一个 bool

您的第一个错误表达式 (*p)() 尝试不带参数调用 p。您的第二个错误表达式 (*p)(args[0], args[1]) 试图用两个参数调用 p

参数的数量必须与参数的数量相匹配,所以这两个都是错误的,就像尝试不带参数或带两个参数直接调用 print 会导致编译错误。

关于c++ - 参数太多,函数指针中的参数太少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11659991/

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