表达式必须具有指向类的类型错误

时间:2014-05-22 08:56:15

标签: c++

假设我有以下课程:

class a {
  xyz();
  Foo foo;
}

class Foo {
  classB();
  run();
}

我想从另一种方法调用run()方法:

int a::xyz{
  foo = new Foo();
  pthread_create(&thread, NULL, myfunc, foo);
  return 0;
}

void *a::myfunc(void* _msg) {
  _msg->run(); 
}

但我收到 Expression必须在我调用run()

的行上有指针类型错误

我可以用什么来解决问题?

1 个答案:

答案 0 :(得分:2)

您想要static_cast<Foo *>(_msg)->run()

您的_msg是void *。你不能在那上面调用方法;编译器需要知道所指向对象的类型,以确定可以调用的方法。转换为Foo *告诉编译器正确的类型。