C ++ : 관련이없는 구조 내부의 클래스 멤버 기능에 대한 포인터
-
13-09-2019 - |
문제
나는 이것에 대한 방법에 대해 온라인으로 약간의 독서를했는데, 나는 그것을 올바르게하고 있다고 생각합니다 ... 내 목표는 수업의 멤버-비트에 포인터를 포함하는 구조 객체를 갖는 것입니다.
지금까지 내가 가지고있는 것은 다음과 같습니다 ...
typedef void (foo::*HandlerPtr)(...);
class foo
{
public:
void someFunc(...);
// ...
private:
// ...
};
struct STRUCT
{
HandlerPtr handler;
};
STRUCT stuff[]
{
{&foo::someFunc}
};
그런 다음 인수의 유무에 관계없이 (실제로 인수 목록을 사용하려고합니다), "핸들러"를 얻습니다.
나는 뭔가를 놓치고 있어야합니다. 그냥 무엇을 모릅니다.
해결책
somefunc ()는 정적 메소드가 아니므로 포인터 간 메드 변수를 통해 약간의 foo ()를 호출하려면 foo 객체 인스턴스가 필요합니다.
foo f;
f.*(stuff[0].handler)();
또는:
foo f;
HandlerPtr mthd = stuff[0].handler;
f.*mthd();
또는 포인터 사용 :
foo *f = new foo;
f->*(stuff[0].handler)();
delete f;
또는:
foo *f = new foo;
HandlerPtr mthd = stuff[0].handler;
f->*mthd();
delete f;
제휴하지 않습니다 StackOverflow