سؤال

لدي قالب فئة محددة (في جزء منه) كما

template <class T> MyClass
{
public:
   void DoSomething(){}
};

إذا كنت ترغب في الاتصال DoSomething من فئة أخرى ، ولكن أن تكون قادرة على القيام بذلك لعدة 'T' أنواع في نفس المكان ، أنا عالقة على فكرة عن طريقة وظائف مؤشرات فريد مقيدة إلى نوع الفئة.بالطبع كل MyClass هو نوع مختلف, لذلك أنا لا يمكن أن متجر مؤشرات الدالة على MyClassDoSomething() في أ 'متعددة الأشكال' الطريق.

بلدي استخدام القضية أريد أن المحل في عقد الدرجة متجه من مؤشرات الدالة على 'DoSomething' تلك التي لا يمكن أن تصدر الدعوة إلى تخزين جميع الطبقات من مكان واحد.

أي شخص لديه أي اقتراحات ؟

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

المحلول

حسنا ، إذا functor الحل لا يعمل كما يجب.ربما يجب أن يكون لديك قالب فئة ترث من قاعدة مشتركة "واجهة" الطبقة.ومن ثم يمكنك استخدام ناقلات تلك.

شيء من هذا القبيل:

class Base { 
public:
  virtual ~Base(){}
  virtual void DoSomething() = 0;
}

template <class T> class MyClass : public Base {
public:
    void DoSomething(){}
};

std::vector<Base *> objects;
objects.push_back(new MyClass<int>);
objects.push_back(new MyClass<char>);

نصائح أخرى

أنت تعرف هذا هو بالضبط ما كنت بحاجة إلى القيام به.Bizzarly كان مخفضة على أنها الحل صالحة لمدة بلدي usecase في وقت مبكر لأسباب الآن الهرب مني.أعتقد أنني كنت أعمى من قبل بعض metaprogramming الاشياء أفعله في نفس المكان من أجل تجميع الوقت الإرسال (أيمربكة وقت الترجمة و وقت التشغيل في فاسد الدماغ).

شكرا يهز!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top