2011-01-03 14 views
5

मैं कैसे एक आभासी समारोह के माध्यम से सही अग्रेषण सक्षम कर सकते हैं? मैं वास्तव में कोई सी में की तरह ++ 03 हर अधिभार लिखने के लिए इच्छा है।बिल्कुल सही अग्रेषण - आभासी कार्यों के माध्यम से

उत्तर

3

आप नहीं कर सकते। बिल्कुल सही अग्रेषण केवल, संयोजन टेम्पलेट्स और rvalue संदर्भ से काम करता है क्योंकि यह वास्तविक प्रकार T&& किस तरह पर निर्भर करता है जब टी विशेष है करने के लिए मूल्यांकन करता है। आप मिश्रण नहीं कर सकते हैं टेम्पलेट्स और आभासी कार्य करता है।

struct base { 
    virtual void invoke() = 0; 
}; 

template <class T> 
struct derived : public base { 
    derived(T&& yourval) : m_value(std::forward(yourval)) {} 
    virtual void invoke() { /* operate on m_value.. */ } 

    T&& m_value; 
}; 
:

हालांकि, अगर आप टाइप विलोपन तंत्र के कुछ प्रकार से अपनी समस्या को हल करने के लिए सक्षम हो सकता है कर सकते हैं

संबंधित मुद्दे