假设我有以下课程:
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()
我可以用什么来解决问题?
答案 0 :(得分:2)
您想要static_cast<Foo *>(_msg)->run()
。
您的_msg是void *
。你不能在那上面调用方法;编译器需要知道所指向对象的类型,以确定可以调用的方法。转换为Foo *
告诉编译器正确的类型。