好吧,我想要做的只是一个带有函数指针的“开关”,但带有方法指针。开关是,如果我调用方法Run(),它将重定向到A::RunOn()或A::RunOff()根据Runptr 指向这些成员函数。
我知道这是可以做到的。我是用普通的c 语言完成的,但我已经搜索并用 google 搜索了在c++ 中做同样的事情,但没有运气。
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
嗯,问题在标题中。如果我在 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”相同?