level 1
bobijax
楼主
今天在cocostudio中做了一个界面,其中有按钮,就尝试着使用addTouchEventListener方法给它加上触摸响应功能。但是在添加当前layer的方法函数给按钮时出现了错误
error C3867: 'GameSceneLayer::menuBackCallback': function call missing argument list; use '&GameSceneLayer::menuBackCallback' to create a pointer to member
查看了addTouchEventListener方法的代码
void Widget::addTouchEventListener(Widget::ccWidgetTouchCallback callback)
{
this->_touchEventCallback = callback;
}
而Widget::ccWidgetTouchCallback就是一个定义好了参数为(Ref*,Widget::TouchEventType)的std::function
简单来说就是将这个函数指针(?)赋值给了这个Widget(这里就是我的button),之后我写了一个很简单的小程序重现了这个错误。
#include "stdafx.h"
#include <iostream>
#include <functional>
using namespace std;
class A // A相当于当前的layer
{
public:
void ba();
void aa(A*, int d); //这个就是button对应的响应函数
};
typedef std::function<void(A*, int,int)> ccWidgetTouchCallback;
class B // 这东西相当于button
{
public:
ccWidgetTouchCallback func;
};
int main(array<System::String ^> ^args)
{
A a; // 创建layer
a.ba();//相当于layer的init()函数
}
void A::ba()
{
B thisB; //init过程中创建了button,只不过我的程序中他是从cocostudio ui里读取出来的
thisB.func = A::aa; //就是这里,将响应函数赋值给button
}
void A::aa(A*, int d)
{
cout<<"hello";
return;
}
好吧,打了那么一长串其实我不知道解决办法,网上看的例子别人都很正常,就我这里不行,3.0和3.1版本都试过了,也没区别。希望能有人帮忙,告诉我错在哪里,不胜感激。
2014年05月26日 10点05分
1
error C3867: 'GameSceneLayer::menuBackCallback': function call missing argument list; use '&GameSceneLayer::menuBackCallback' to create a pointer to member
查看了addTouchEventListener方法的代码
void Widget::addTouchEventListener(Widget::ccWidgetTouchCallback callback)
{
this->_touchEventCallback = callback;
}
而Widget::ccWidgetTouchCallback就是一个定义好了参数为(Ref*,Widget::TouchEventType)的std::function
简单来说就是将这个函数指针(?)赋值给了这个Widget(这里就是我的button),之后我写了一个很简单的小程序重现了这个错误。
#include "stdafx.h"
#include <iostream>
#include <functional>
using namespace std;
class A // A相当于当前的layer
{
public:
void ba();
void aa(A*, int d); //这个就是button对应的响应函数
};
typedef std::function<void(A*, int,int)> ccWidgetTouchCallback;
class B // 这东西相当于button
{
public:
ccWidgetTouchCallback func;
};
int main(array<System::String ^> ^args)
{
A a; // 创建layer
a.ba();//相当于layer的init()函数
}
void A::ba()
{
B thisB; //init过程中创建了button,只不过我的程序中他是从cocostudio ui里读取出来的
thisB.func = A::aa; //就是这里,将响应函数赋值给button
}
void A::aa(A*, int d)
{
cout<<"hello";
return;
}
好吧,打了那么一长串其实我不知道解决办法,网上看的例子别人都很正常,就我这里不行,3.0和3.1版本都试过了,也没区别。希望能有人帮忙,告诉我错在哪里,不胜感激。