相关疑难解决方法(0)

从一个类返回一个函数

我希望能够从类中返回一个函数,这样就不需要通过返回类型进行if-else操作。

我有一个返回多个字符串的类。相反,我想返回多个函数。

#include <iostream>

class Handler
{
private:

public:
    int handleMessage(int code)
    {
        return code+1;
    }

};

void func1();
void func2();
void func3();

int main (int argc, char *argv[])
{
    Handler handle;
    int code = handle.handleMessage(0);
    if(code == 1)
    {
        func1();
    }
    return 0;
}

void func1(){ std::cout << "1" << std::endl;}
void func2(){ std::cout << "2" << std::endl;}
void func3(){ std::cout << "3" << std::endl;}
Run Code Online (Sandbox Code Playgroud)

我想要的是:handleMessage类中的函数Handler返回某些内容,因此在我的主应用程序中,我不必使用if-else。

所以主要看起来像这样:

function = handle.handleMessage(0); 
Run Code Online (Sandbox Code Playgroud)

应用程序将选择它将运行的功能。例如:

function = handle.handleMessage(0);  //will …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

6
推荐指数
2
解决办法
276
查看次数

在没有typedef的情况下在C++中返回函数指针时出错

我试图在不使用typedef的情况下返回指向函数的指针,但是编译器(gcc)发出了一个奇怪的错误,好像我无法进行那种设置.

备注:使用typedef代码工作.

码:

void catch_and_return(void (*pf)(char*, char*, int&), char *name_one, char* name_two, int& number)(char*, char *, int&)
{
    pf(name_one, name_two, number);

    return pf;
}
Run Code Online (Sandbox Code Playgroud)

错误:

'catch_and_return'声明为返回函数的函数

你能解释一下为什么编译器不允许我这样做吗?谢谢!

c++ return function-pointers

4
推荐指数
1
解决办法
754
查看次数

C++函数通过一个带有public成员指针的对象调用函数,而不使用dereference运算符

好吧,我认为标题足够描述(但令人困惑,抱歉).

我正在读这个库:Timer1.

在头文件中有一个指向函数的公共成员指针,如下所示:

class TimerOne
{
  public:
  void (*isrCallback)();
};
Run Code Online (Sandbox Code Playgroud)

存在TimerOne类的实例化对象,称为"Timer1".

Timer1调用该函数如下:

Timer1.isrCallback();
Run Code Online (Sandbox Code Playgroud)

这怎么回事?我熟悉通过使用dereference运算符通过函数指针调用函数.

例如:

(*myFunc)();
Run Code Online (Sandbox Code Playgroud)

所以我希望通过对象的上述调用更像是:

(*Timer1.isrCallback)();
Run Code Online (Sandbox Code Playgroud)

那么,通过函数指针调用函数的可接受选项是什么,作为独立的函数指针对象的成员?

c++ pointers function-pointers function

4
推荐指数
2
解决办法
772
查看次数

返回一个已评估参数的函数

我是C++的新手,我想做以下但无法弄清楚如何.

我想基于带有一些参数的模板定义一个函数.比方说,我们有f(x)=a*x+b,但参数ab将作为参数传递.

我想定义一个函数create_function(double a, double b),返回a*x+bab评估,无论参数传递,这样我可以用另一个函数func( double x )来评价它.

目标是使用给定的参数创建一次函数,然后可以由另一个例程重复调用它f(x).真正的功能比这复杂得多,但我能够适应它.

我一直在看这篇文章,它会与此类似,但我不知道如何使它适应返回仍然依赖的函数x.

c++

2
推荐指数
1
解决办法
178
查看次数

在C++中返回lambda函数

typedef int (*identity_t)(int); 
identity_t retFun() { 
  return [](int x) { return x; };
}
Run Code Online (Sandbox Code Playgroud)

这段代码有效,但为什么我需要第一行呢?

为什么下面的代码不起作用?

int (*)(int) retFun() { 
  return [](int x) { return x; };
}
Run Code Online (Sandbox Code Playgroud)

c++ lambda

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

标签 统计

c++ ×5

function-pointers ×2

c++11 ×1

function ×1

lambda ×1

pointers ×1

return ×1