클래스 멤버 함수를 하위 클래스 (파생되지 않음)에 전달하는 방법에 대해 고민하는 데 어려움이 있습니다.클래스 간의 함수 포인터
내 최상위 클래스는 다음과 같이이다 :
그래서 기본적으로 여기class CFnList
{
public:
// Public functions
CFnList();
void addFnPtrToList(int index, int (*fn)(void));
private:
// Fn pointer list
typedef struct
{
int index;
int (*fn) (void);
}fn_list_t;
// function pointer list
QVector<fn_list_t> _fn_list;
};
내가 클래스 CTop의 인스턴스를 멤버 중 하나입니다 :
class CTop
{
public:
CTop();
int func1(void);
private:
CFnList* _funcList;
};
CTop::CTop():
_funcList(0)
{
_funcList = new CFnList();
_funcList->addFnPtrToList(0, &CTop::func1);
}
int CTop::func1(void)
{
// Does some stuff...
}
내 기능 목록 클래스는 다음과 같이이다 클래스 CFnList에 대한 포인터. CFnList 포인터는 CTop의 생성자에서 인스턴스화됩니다. 다음 줄을 호출하여 CTop의 멤버 함수 중 하나에 대한 포인터를 CFnList에 전달하려고합니다. "_funcList-> addFnPtrToList (0, & CTop :: func1);" addFnPtrToList가 매개 변수 (int, (CTop :: *)())를 사용하지 않는다는 문제가 있습니다. 따라서 컴파일러는이 함수가 특정 멤버 함수이고 일반 (어쩌면 정적 인) 함수가 아니라는 것을 알고 있습니다.
멤버 함수에 대한 포인터를 하위 클래스로 전달할 수있는 방법이 있습니까? 제 경우에는 하위 클래스가이 함수를 호출 할 수 있기를 원합니다. 나는 아마도 정적 멤버 함수 나 뭔가를 만들 필요가 있다고 생각하지만 구문은 이것을 수행하는 방법을 알지 못한다.
모든 도움/조언 부탁드립니다. 사료
사과 기여한 모든 사람에게
감사 O를, 나는 시간이 실행 한 내 일 :( –