我试图使用以前尝试过的方法将功能分配给按钮,该方法之前也可以使用,但是由于某种原因,我现在从编译器获取此信息:
错误C3867:'WindowReq :: calc_cb':非标准语法; 使用“&”创建指向成员的指针
这是代码:
class WindowReq : public Fl_Window
{
public:
WindowReq(int W, int H, const char* Title);
Fl_Input* InVel;
Fl_Input* InDeg;
Fl_Button* Calc;
private:
void calc_cb(Fl_Widget* o, void* v);
};
WindowReq::WindowReq(int W, int H, const char* Title) : Fl_Window(W, H, Title)
{
begin();
Calc = new Fl_Button((WINSIZE - 150), 50, 100, 30, "Calculate path");
Calc->callback(calc_cb, this);
InVel = new Fl_Input(70, 50, 100, 30, "Velocity:");
InDeg = new Fl_Input(((WINSIZE / 3) + 50), 50, 100, 30, "Angle:");
end();
show();
}
我不知道问题是什么,任何帮助将不胜感激。
编辑:这是根据VisualStudio导致错误的行:
Calc->callback(calc_cb, this);
您不能像这样调用实例化方法。
该功能不必依赖于类的实例。
因此,基本上,您有多种解决方法,但是由于您将this
作为第二个参数传递,因此我想您只是static
在calc_cb
声明之前忘记了关键字。
然后,调用应如下所示:
Calc->callback(&WindowReq::calc_cb, this);
其他方法包括使用模板回调或C ++ 11的lambda,它们可以在实例化类中直接调用该方法。可能还有更多的方法可以实现这一目标。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句