问个C++的问题
有个sqlite类的函数有个回调函数声明是这么写的
SQLITE_API int sqlite3_exec(
sqlite3*, /* An open database */
const char *sql, /* SQL to be evaluated */
int (*callback)(void*,int,char**,char**), /* Callback function */
void *, /* 1st argument to callback */
char **errmsg /* Error msg written here */
);
其中第三个参数就是一个回调函数
我申明了一个方法是这样的:int QuoridorAI::loadRecord( void * para, int n_column, char ** column_value, char ** column_name)
QuoridorAI为类名
我调用sqlite函数的方法是这样的:
result = sqlite3_exec( db, sql->getCString(),loadRecord, &count, &errMsg );
这样调用编译不过。。。怎么破
错误提示:
2 IntelliSense: "int (QuoridorAI::*)(void *para, int n_column, char **column_value, char **column_name)" 类型的实参与 "int (*)(void *, int, char **, char **)" 类型的形参不兼容 d:\cocos2d-x-2.1.5\quoridor\proj.win32\quoridorai.cpp 64 51 Quoridor.win32
如果我把我自己申明的方法中QuoridorAI::去掉,那么这个回调函数里就没法访问QuoridorAI的变量
非常闹心啊
loadRecord 设置为静态函数试试 废话,loadRecord是个成员函数,你这样能编译过才怪
你得先定义一个对象QuoridorAI *qa = new QuoridorAI(); 传qa->loadRecord(...)进去 8da真他妈牛人多,操 C++成员函数要看具体编译器的实现方法,大多都是基于vtable
正解是用使用static函数。 直接召唤木天使好么 牛clear 发表于 2013-9-1 15:36 static/image/common/back.gif
C++成员函数要看具体编译器的实现方法,大多都是基于vtable
正解是用使用static函数。
草,先去baidu一下什么是vtable好吗?
。。。。。。。。。。。。。。。。
8da藏龙卧虎,我在想是不是去应聘个程序员的岗位,然后把每日工作发到8da来,月入2W+ lz调用的时候直接调用成员函数应该是笔误吧 8da真他妈牛人多,操 SQLITE_API int sqlite3_exec(
sqlite3*, /* An open database */
const char *sql, /* SQL to be evaluated */
int (*callback)(void*,int,char**,char**), /* Callback function */
void *, /* 1st argument to callback */
char **errmsg /* Error msg written here */
);
int QuoridorAI::loadRecord( void * para, int n_column, char ** column_value, char ** column_name)
//result = sqlite3_exec( db, sql->getCString(),loadRecord, &count, &errMsg );
呵呵,编译器的提示是对的。
QuoridorAI ai;
sqlite3_exec(db,sql->getCString(),std::bind(&QuoridorAI::loadRecord,&ai),
&count, &errMsg);
或者你是在QuoridorAI类里面的话,可以这么调用
sqlite3_exec(db,sql->getCString(),std::bind(&QuoridorAI::loadRecord,this),
&count, &errMsg);
C++当年哥也会啊 当哥说说在做啥游戏啊,这是cocos哈哈 牛clear 发表于 2013-9-1 15:36 static/image/common/back.gif
C++成员函数要看具体编译器的实现方法,大多都是基于vtable
正解是用使用static函数。
vtable是分析多态才用到的概念吧 和楼主说的好像没啥关系 Neutrino 发表于 2013-9-1 16:28 static/image/common/back.gif
草,先去baidu一下什么是vtable好吗?
[:41] 装逼被破,尴尬。 刁总书记 发表于 2013-9-1 17:15 static/image/common/back.gif
vtable是分析多态才用到的概念吧 和楼主说的好像没啥关系
哈哈,戳穿了 本屌只会C语言,但是本屌的程序是控制机器人的 CPP在企业应用软件行业里已死。太难学难精了。 this... 能和各位精英一个论坛 真是荣幸
页:
[1]