相关疑难解决方法(0)

在C++中使用默认参数的函数指针

C++如何处理与具有默认参数的函数相关的函数指针?

如果我有:

void foo(int i, float f = 0.0f);
void bar(int i, float f);


void (*func_ptr1)(int);
void (*func_ptr2)(int, float);
void (*func_ptr3)(int, float = 10.0f);
Run Code Online (Sandbox Code Playgroud)

哪个函数指针可以用于哪个函数?

c++ function-pointers default-parameters function-signature

34
推荐指数
1
解决办法
5214
查看次数

如何通过指向另一个函数返回的函数的指针来调用具有默认参数的函数?

我有Mult, Add, Div, Sub, Mod那些需要两个整数并返回其参数结果的函数。还有一个函数Calc,该函数将一个字符作为,Operator并返回一个指针,该函数返回一个整数,并接受两个整数参数,例如Mult

  • Mult的第二个参数default这样的函数是So,当我调用时Calc,根据的参数值Calc返回MultAdd... 的地址,Calc因此我只能传递一个参数。

但这不适用于函数指针:

int Add(int x, int y = 2) { // y is default
    return x + y;
}

int Mult(int x, int y = 2) { // y is default
    return x * y;
}

int Div(int x, int y = 2) { // y is default
    return y ? x …
Run Code Online (Sandbox Code Playgroud)

c++ function-pointers default-arguments

21
推荐指数
2
解决办法
1381
查看次数

在 std::transform 中传递 std::stoi

我有一个vectorofstrings和一个空vectorint

vector<string> ints_as_strings;
vector<int>    ints_as_ints;
Run Code Online (Sandbox Code Playgroud)

目标是将前者转变为后者。

std::transform与 lambda 一起工作:

std::transform(ints_as_strings.begin(),
               ints_as_strings.end(),
               back_inserter(ints_as_ints),
               [](const string& s) {return std::stoi(s);});    
Run Code Online (Sandbox Code Playgroud)

然而我只想使用std::stoi.

传递我的函数的地址mystoi是有效的:

int mystoi(string s) {return stoi(s);}

std::transform(ints_as_strings.begin(),
               ints_as_strings.end(),
               back_inserter(ints_as_ints),
               &mystoi);
Run Code Online (Sandbox Code Playgroud)

但是,直接传递地址是std::stoi行不通的。这是因为额外的参数(但是提供了默认值)吗?

c++11

5
推荐指数
0
解决办法
847
查看次数