首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >强制转换后的c++读访问冲突

强制转换后的c++读访问冲突
EN

Stack Overflow用户
提问于 2016-07-23 11:53:16
回答 2查看 423关注 0票数 0

我在类中有一个静态方法,我将其用于回调。在这个回调函数中,我想给result添加一个值。这似乎是不可能的,因为重铸(?)。

有没有办法访问成员变量result并在重新转换后向其添加值,或者我需要考虑一种不同的方法?

MyClass.h

代码语言:javascript
复制
class MyClass
{
public:
 vector<string> result;
 static int c_CB(void *data, int argc, char **argv, char **azColName);
 int Callback(int argc, char **argv, char **azColName);
 void Do(string query);
}

MyClass.cpp

代码语言:javascript
复制
void MyClass:Do(string query)
{
  sqlite3_exec(this->dbResource, query.c_str(), this->c_CB , NULL, &this->errorMsg);
}

int MyClass::c_CB(void *NotUsed, int argc, char **argv, char **azColName)
{
  MyClass* bar = reinterpret_cast<MyClass*>(NotUsed);
  // after reinterpret cast, it does not work 
  //bar->result.insert(bar->result.end(), "foo");

  // function call works
  return bar->Callback(argc, argv, azColName);
}


int MyClass::Callback(int argc, char **argv, char **azColName)
{
  cout << "working" << endl;
}

main.cpp

代码语言:javascript
复制
int main()
{
  MyClass* cl = new MyClass();
  cl->Do("something");
}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38537976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档