سؤال

لقد فعلت القليل من القراءة عبر الإنترنت حول كيفية الذهاب حول هذا الأمر وأعتقد أنني أفعل ذلك بشكل صحيح ... هدفي هو الحصول على مجموعة من الكائنات الهيكل التي تحتوي على مؤشرات على الوظائف الأعضاء للفئة.

إليك ما لدي حتى الآن ...

typedef void (foo::*HandlerPtr)(...);
class foo
{
public:
    void someFunc(...);
    // ...
private:
    // ...
};

struct STRUCT
{
    HandlerPtr handler;
};

STRUCT stuff[]
{
    {&foo::someFunc}
};

ثم عند استدعاء الوظيفة باستخدام (الأشياء [0]. * معالج) ()، مع أو بدون حجج (أقوم بذلك فعليا أن تستخدم قوائم الوسيطة)، أحصل على "Handler": معرف غير محدد ...

يجب أن أكون في عداد المفقودين شيئا ما، فقط لا أعرف ماذا.

هل كانت مفيدة؟

المحلول

SomementFunc () ليست طريقة ثابتة، لذلك تحتاج إلى مثيل كائن فو من أجل الاتصال ببعض PoVunc () عبر متغير مؤشر إلى الأسلوب الخاص بك، أي:

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;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top