다음과 같은 클래스가 있다고 가정합니다.
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()
문제를 해결하기 위해 무엇을 사용할 수 있습니까?
당신은 원합니다 static_cast<Foo *>(_msg)->run()
.
귀하의 _msg는 void *
. 그것에 대한 메서드를 호출 할 수 없습니다. 컴파일러는 호출 할 수있는 메서드를 결정하기 위해 가리키는 개체의 유형을 알아야합니다. 캐스트 Foo *
는 컴파일러에게 올바른 유형 을 알려줍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다