Tag: 回调

在C ++中使用SQLite:对象函数作为回调

所以,我正在开展一个侧面项目,以保持我的c ++技能新鲜(自从我用c ++完成工作已经很多年了)。 我正在研究我将使用SQLite的东西。 我有一个SQLite代码的包装器。 我注意到的一件事是SQLite在其sqlite3_exec(…)函数中使用了c风格的回调函数。 我想让回调函数成为一个对象方法,因为我希望它能够修改对象变量,但我不确定如何准确地执行此操作。 我已经检查了stackoverflow上的其他类似问题,但没有任何帮助。 这是我如何声明我的包装类: class DBAdapter { private: sqlite3* db; int getUserRecords(std::string); std::vector records; int callbackSel(void*, int , char**, char**); public: DBAdapter(); ~DBAdapter(); int open(std::string); void close(); int insertRecord(); int deleteRecord(); int getNumUserRecords(); }; 以下是我在getNumUserRecords中尝试使用回调(callbackSel)的方法: int DBAdapter::getUserRecords(std::string name) { std::string sql = “SELECT” + name + ” from USERS”; char* […]

MySQL是否允许在C中进行回调,以便在发生更改时,我会收到通知?

MySQL是否允许在C中进行回调,以便当数据库中发生更改(如插入),由其他程序或用户在命令行执行时,我会收到通知? 我猜它没有,因为mysqlclient是一个库,而不是一个正在运行的线程。 但我不妨问一下。

如何使用C ++成员函数作为C框架的回调函数

有一个C库(我无法更改)支持该类型的回调函数 void (*callback)(void *appContext, int eventid) 我想设置一个C ++函数作为回调。 具体来说,我有以下问题? 我是否需要在”extern C”块下声明回调函数? 成员函数是否需要是静态的才能成为回调函数? 是否可以使用非静态成员函数? 如果有,怎么样? 什么时候建议使用非静态成员函数? 函数是否是模板函数是否重要? 非类C风格函数是否比类成员函数有任何优势? 我在旧的VC ++编译器上尝试这些变体,它不支持最新的C ++标准。 但代码需要独立于平台,并且应该适用于大多数C ++编译器。 我想知道回调的推荐做法是什么?

if和switch语句的函数数组的性能

我正在编写一个非常重要的性能代码部分,我有一个关于用函数指针数组替换case语句(或if语句)的疯狂想法。 让我certificate一下; 这是正常版本: while(statement) { /* ‘option’ changes on every iteration */ switch(option) { case 0: /* simple task */ break; case 1: /* simple task */ break; case 2: /* simple task */ break; case 3: /* simple task */ break; } } 这是“回调函数”版本: void task0(void) { /* simple task */ } void task1(void) […]