لا يمكنني الوصول إلى المؤشر إلى الأعضاء. لماذا ا؟

StackOverflow https://stackoverflow.com/questions/1802204

سؤال

النظر في الرمز التالي:

template<class T, class F>           struct X {};
template<class T, class F, T F::* m> struct Y {};

struct Foo {
    int member;
    typedef X<int, Foo>               x_type; // works well
    typedef Y<int, Foo, &Foo::member> y_type; // ERROR
};

typedef Y<int, Foo, &Foo::member> y_type2; // OK

لماذا يولد برنامج التحويل البرمجي خطأ؟ (VS2008)


جديد

لقد نشرت هذا الخطأ إلى connect.microsoft.com.

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

المحلول 2

هذا ال حشرة

نصائح أخرى

أعتقد أنه يرتبط بطريقة ما مع أن C ++ المرئي لا يعرف حجم المؤشر للعضو في تلك المرحلة. يفحص هذه تقرير العيب على سبيل المثال (هنا هي مشكلة أخرى مع المؤشر لمتغير العضو). أعتقد أنك عثرت على خطأ مرئي واحد C ++ ويجب الإبلاغ عن Connect.microsoft.com.

لقد تعثرت على نفس المشكلة. لا يزال دعم حجج القالب من المؤشر إلى الأعضاء محدودًا في VC ++ (انظر تقرير الشوائب).

في حالتي ، يمكنني العمل من حوله باستخدام دالة قالب ISO فئة قالب:

template< typename Class > struct CMemberDumper {
    Class& object;
    template< typename M > void visit_member( M C::*pm ) {
       std::cout << object.*pm;
    }
};
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top