2014-10-06 24 views
0

我有一个Foo类。在构造函数中传递和存储静态函数指针

class Foo 
{ 
public: 
    int(_bar)(const int); 

    Foo(int(bar)(const int)) 
    { 
     _bar = bar; 
    } 
}; 

我想传递一个指向创建静态函数的指针,并将其保留在类中,以便稍后调用它。

我得到的错误...

error C2659: '=' : function as left operand 

...但我不明白为什么。

任何人都可以请指教?

回答

2

功能:

int(_bar)(const int); 

函数指针:

int(*_bar)(const int); 

你刚才忘了*

+0

谢谢。但为什么这不需要param? – Beakie 2014-10-06 12:47:03

+0

如果你想把一个函数指针作为一个参数,就需要这个错误,这个错误恰好发生在成员上,因为你试图分配给它,你可以用一个函数指针来做,但不能用函数来做(如果甚至是有道理的)。 – Drax 2014-10-06 12:48:19

+0

因此,如果我要像这样传递方法,Foo(int(bar)(const int))作为构造函数定义无效:Foo(&someStaticFunc); – Beakie 2014-10-06 12:50:12