2013-11-09 102 views
0

我有一个类ClassA的C++函数指针分配功能:C++通过函数指针指向另一个函数指针

void (ClassA::*funcPntr1)(void); 

指向功能:通过使用分配

void func(); 

functPntr1 = &ClassA::func; 

现在,我有另一个功能指针:

void (ClassA::*funcPntr2)(void); 

我想funcPntr2指向funcPntr1指向的函数。 我该怎么做?

我已经试过这样:

funcPntr2 = &(this->*funcPntr); //normally, i invoke the function pointer by (this->*funcPntr)() 

不过是错误的。我已经尝试了许多逻辑组合,但似乎没有工作。

+3

'funcPntr2 = funcPntr;'? – chris

+0

但是,这不仅仅是复制指针而不是指针指向的函数? – Alterecho

+0

如果你想funcPntr2引用funcPntr的指称,那么你希望funcPtr2等于funcPntr。所以funcPtr2 = funcPntr; – zmccord

回答

1

分配对象:

funcPntr2 = funcPntr; 
+0

那不是只是复制指针而不是指针指向的函数? – Alterecho

+3

@Alterecho:函数不是对象,也不是成员函数。没有“复制功能”的概念。 –

+0

当我在赋值后更改funcPntr指向的函数时会发生什么? – Alterecho

1

如果你想分配这是目前分配给它的指针,它仅仅是一种任务,为其他人说(funcPntr2 = funcPntr)。

如果你想要这个任务保持,我。即如果你希望funcPntr2总是指向funcPntr指向的位置,即使后者改变了,除非你改变定义,否则没有办法。

你不得不

  • void (ClassA::**funcPntr2)(void);
  • 分配funcPntr2 = &funcPntr
  • 呼叫(*funcPntr)()

当你谈论C++时,我并不那么熟悉;也许你可以用引用做些事情。

+0

这仍然取决于第一个funcPntr。我正在尝试在作业后创建funcPntr2独立的funcPntr1。那么没有办法做到这一点? – Alterecho