错误C2660:'MouseListener :: MousePressed':函数不带4个参数

时间:2016-06-15 16:05:40

标签: c++ observer-pattern

我正在为学校作业开发一个c ++伪图形按钮。 我使用观察者模式。

在Button.cpp中

$(document).ready(function(){
   var myHandler = function(){
        $("html, body").animate({ scrollTop: 220 }, "slow");
   };

   $('.navbar-toggle').on('click', myHandler);

   $(window).scroll(function() {
       if ($(document).scrollTop() > 0) {
           $('.navbar-toggle').off('click', myHandler);
       } else {
           $('.navbar-toggle').on('click', myHandler);
       }
   });
});

你可以看到MousePressed函数接收4个参数,但我得到:

  

函数不带4个参数

在Button.h中

void Button::notify()
{
    for (int iterator = 0; iterator < listeners.size(); iterator++)
    {
        listeners[iterator]->MousePressed(*this, x, y, isLeft);
    }
}

在main中:

struct MouseListener
{
    virtual void MousePressed(Button &b, int x, int y, bool isLeft) = 0;
};

class Button : public Label
{
public:

    vector <MouseListener*> listeners;
.
.
.

错误:

  
      
  • 错误2错误C2061:语法错误:标识符'按钮'c:\ users \ gonen \ unitedproj \ unitedproj \ Button.h 14 1 unitedProj

  •   
  • 错误4错误C2061:语法错误:标识符'按钮'c:\ users \ gonen \ unitedproj \ unitedproj \ Button.h 14 1 unitedProj

  •   
  • 错误5错误C2660:'MouseListener :: MousePressed':函数不带4个参数C:\ Users \ Gonen \ unitedProj \ unitedProj \ Button.cpp 24 1 unitedProj

  •   

当前两个用于main中的声明时,最后一个是在Button.cpp中使用该函数。 救命?当我站在Button.cpp的功能上使用鼠标光标时,我得到:

  

void MouseListener :: MousePressed(Button&amp; b,int x,int y,bool isLeft)

我只需要这个工作,所以我可以继续前进,让其他小组成员使用他们实施的控件中的按钮......然后继续下一个我需要做的事情: - (

编辑:谢谢你的快速回答。  我试着按照你的要求做。现在我明白了:

  

*错误3错误LNK2019:函数__tmainCRTStartup中引用的未解析的外部符号main C:\ Users \ Gonen \ unitedProj \ unitedProj \ MSVCRTD.lib(crtexe.obj)un itedProj

1 个答案:

答案 0 :(得分:0)

Button未在声明MousePressed的位置声明,因此无法使用。我建议你应该使用前瞻声明。

class Button; // add this line

struct MouseListener
{
    virtual void MousePressed(Button &b, int x, int y, bool isLeft) = 0;
};

class Button : public Label
{
public:

    vector <MouseListener*> listeners;
.
.
.