错误 C2660:'MouseListener::MousePressed':函数不带 4 个参数
error C2660: 'MouseListener::MousePressed' : function does not take 4 arguments
我正在为一项学校作业开发一个 C++ 伪图形按钮。
我用的是观察者模式。
在Button.cpp中:
void Button::notify()
{
for (int iterator = 0; iterator < listeners.size(); iterator++)
{
listeners[iterator]->MousePressed(*this, x, y, isLeft);
}
}
如您所见,MousePressed 函数接收 4 个参数,但我得到:
function does not take 4 arguments
在Button.h中:
struct MouseListener
{
virtual void MousePressed(Button &b, int x, int y, bool isLeft) = 0;
};
class Button : public Label
{
public:
vector <MouseListener*> listeners;
.
.
.
主要内容:
struct MyListener : public MouseListener
{
MyListener(iControl &c) : _c(c) { }
void MousePressed(Button &b, int x, int y, bool isLeft)
{
_c.setForeground(Color::Red);
}
private:
iControl &_c;
};
int main(VOID)
{
错误:
Error 2 error C2061: syntax error : identifier 'Button' c:\users\gonen\unitedproj\unitedproj\Button.h 14 1 unitedProj
Error 4 error C2061: syntax error : identifier 'Button' c:\users\gonen\unitedproj\unitedproj\Button.h 14 1 unitedProj
Error 5 error C2660: 'MouseListener::MousePressed' : function does not take 4 arguments C:\Users\Gonen\unitedProj\unitedProj\Button.cpp 24 1 unitedProj
前两个用于main中的声明,最后一个用于Button.cpp中函数的使用。
帮助?当我用鼠标光标站在 Button.cpp 中的函数上时,我得到:
void MouseListener::MousePressed(Button &b,int x,int y, bool isLeft)
我只需要它工作,这样我就可以继续前进,让其他组成员使用他们实现的控件中的按钮...然后继续我需要做的下一个事情:-(
编辑:感谢您的快速回答。
我试着按照你的要求去做。现在我得到:
*Error 3 error LNK2019: unresolved external symbol main referenced in function __tmainCRTStartup C:\Users\Gonen\unitedProj\unitedProj\MSVCRTD.lib(crtexe.obj) unitedProj
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;
.
.
.
我正在为一项学校作业开发一个 C++ 伪图形按钮。 我用的是观察者模式。
在Button.cpp中:
void Button::notify()
{
for (int iterator = 0; iterator < listeners.size(); iterator++)
{
listeners[iterator]->MousePressed(*this, x, y, isLeft);
}
}
如您所见,MousePressed 函数接收 4 个参数,但我得到:
function does not take 4 arguments
在Button.h中:
struct MouseListener
{
virtual void MousePressed(Button &b, int x, int y, bool isLeft) = 0;
};
class Button : public Label
{
public:
vector <MouseListener*> listeners;
.
.
.
主要内容:
struct MyListener : public MouseListener
{
MyListener(iControl &c) : _c(c) { }
void MousePressed(Button &b, int x, int y, bool isLeft)
{
_c.setForeground(Color::Red);
}
private:
iControl &_c;
};
int main(VOID)
{
错误:
Error 2 error C2061: syntax error : identifier 'Button' c:\users\gonen\unitedproj\unitedproj\Button.h 14 1 unitedProj
Error 4 error C2061: syntax error : identifier 'Button' c:\users\gonen\unitedproj\unitedproj\Button.h 14 1 unitedProj
Error 5 error C2660: 'MouseListener::MousePressed' : function does not take 4 arguments C:\Users\Gonen\unitedProj\unitedProj\Button.cpp 24 1 unitedProj
前两个用于main中的声明,最后一个用于Button.cpp中函数的使用。 帮助?当我用鼠标光标站在 Button.cpp 中的函数上时,我得到:
void MouseListener::MousePressed(Button &b,int x,int y, bool isLeft)
我只需要它工作,这样我就可以继续前进,让其他组成员使用他们实现的控件中的按钮...然后继续我需要做的下一个事情:-(
编辑:感谢您的快速回答。 我试着按照你的要求去做。现在我得到:
*Error 3 error LNK2019: unresolved external symbol main referenced in function __tmainCRTStartup C:\Users\Gonen\unitedProj\unitedProj\MSVCRTD.lib(crtexe.obj) unitedProj
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;
.
.
.