我正在为学校作业开发一个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个参数,但我得到:
在Button.h中函数不带4个参数
:
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
答案 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;
.
.
.