小编Luc*_*as 的帖子

如何使用指向成员函数的指针进行切换?

好吧,我想要做的只是一个带有函数指针的“开关”,但带有方法指针。开关是,如果我调用方法Run(),它将重定向到A::RunOn()A::RunOff()根据Runptr 指向这些成员函数。

我知道这是可以做到的。我是用普通的但我已经搜索并用 google 搜索了在做同样的事情,但没有运气。

class A
{
    typedef (void)(A::*RunPtr)(int);
    RunPtr RunMethod;

public:
    RunMethod Run;

    A()
    {
        Run = RunOff;
    }

    void SetOn(bool value)
    {
        if (value)
            Run = RunOn;
        else
            Run = RunOff;
    }

    void RunOn(int)
    {
        // RunOn stuff here
    }

    void RunOff(int)
    {
        // RunOff stuff here
    }
};
Run Code Online (Sandbox Code Playgroud)

所以我可以调用,Run()并且在函数调用之间会有一个切换,我认为这比仅仅这样做更有效:

if (on)
    RunOn();
else
    RunOff();
Run Code Online (Sandbox Code Playgroud)

不知道怎么办!

c++ algorithm member-function-pointers class member-functions

3
推荐指数
2
解决办法
154
查看次数

C++11 将变量作为左值引用。他们真的是“vars”还是只是“别名”?

嗯,问题在标题中。如果我在 C++11 中有以下代码:

int a, b = 20;
int &ra = a;
ra = b;
std::cout << ra << std::endl;     //Prints 20
Run Code Online (Sandbox Code Playgroud)

编译器如何处理“ra”,它是创建另一个var作为指针还是只是一个别名,当编译器发现“ra”时与说“a”相同?

c++ variables reference lvalue

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