에 함수 포인터 나는이 수업 C++ : 다른 클래스 기능
class B {
public:
int func(int i);
};
class A {
public:
typedef int (B::*fPtr)(int);
void run();
B* mB;
};
void A::run() {
// create a pointer
fPtr p = &(B::func);
// invoke the function
mB->*p(2); <------- Compilation Error
}
내가 뭘해야 할 것은 A의 실행 기능에 FUNC()에 대한 포인터를 만드는 것입니다
있습니다. mB가 1 개의 인수를 가진 함수에 해당하지 않는다는 컴파일 오류가 발생합니다. 왜mB->func(2);
를 호출 할 수 없습니다
왜 당신이 그렇게 복잡하고있다를? 상속으로 태그를 붙인 이유는 무엇입니까? 인터페이스에 대해 들어 봤어? –
왜 std :: function/boost :: function을 사용하지 않습니까? 그들은 바보 같은 C 스타일 함수 포인터보다 훨씬 더 유연하고 사용하기가 훨씬 쉽습니다. – Lalaland
@EthanSteinberg 멤버 함수 포인터는 C 함수 포인터와 관련이 거의 없으며'std/boost :: function'에 저장할 수 없습니다. –