【发布时间】:2021-10-11 05:21:04
【问题描述】:
我有一个“Data.db”,其中包含 3 个表,用于存储某种“足球数据”。 一张桌子供“团队”使用,另一张桌子供“玩家”使用。我现在要做的是从“团队”中获取“最高”ID,以便将新生成的玩家分配给该团队。 (每个玩家都有一个_teamId)
我可以通过使用这个查询和一个只打印我需要的值的 callback_id 来打印我想要的 ID。
查询:
string query = "SELECT COUNT(ID) FROM TEAMS;";
highest_id = (sqlite3_exec(db, query.c_str(), callback_id, 0, &messageError));
回调:
int Team::callback_id(void* data, int count, char** values, char** columns) {
int id = atoi(values[1]);
std::cout << "callback_id says: " << id << endl;
return 0;
}
我必须做些什么才能将回调函数中的这个 id 存储在一个变量中,以便以后在我的程序中使用?似乎我不能只返回它,也不能只将 id 值分配给我的Team::_id,因为它给了我一个错误:
'invalid use of member ‘Team::_id’ in static member function'
我们将不胜感激。我仍在尝试了解有关 sqlite3 和回调函数的更多信息,但我在这个问题上浪费了太多时间,以至于我不知道我还能尝试什么。
【问题讨论】:
-
C 库中经常使用 void* 指针为函数操作提供上下文。您可以将其视为
this指针的扩展版本。您应该能够将您的 c++ 对象放在那里并存储它。