파생 클래스에서 함수에 대한 포인터를 저장하는 기본 클래스가 있습니다. BaseClass와 파생 클래스에서 포인터로 함수를 호출해야합니다.함수를 포인터로 호출하는 방법?
template < class T >
class BaseClass {
private:
typedef void (T::*FunctionPtr)();
FunctionPtr funcPtr;
public:
void setFunc(FunctionPtr funcPtr) {
this->funcPtr = funcPtr;
(this->*funcPtr)(); // I need to call it here also but it doesn't work
}
};
class DerivedClass: public BaseClass <DerivedClass> {
public:
void callMe() {
printf("Ok!\n");
}
void mainFunc() {
setFunc(&DerivedClass::callMe);
(this->*funcPtr)(); // works fine here
}
};
오류 : 왼쪽 피연산자 -> * 오른쪽 피연산자와 호환 클래스에 대한 포인터 될 수 있지만 'BaseClass로 *'
당신은 '왼쪽으로 this'가'사용할 수 없습니다
당신은 사용할 필요가 T' –
@RyanHaining 감사합니다. 코드 조각을 피하는 방법을 보여줄 수 있습니까? – JavaRunner