2010-02-26 13 views
7

मुझे नहीं पता कि प्रश्न को लघु विषय पंक्ति में बहुत अच्छी तरह से कैसे वाक्यांशित किया जाए, इसलिए मुझे लंबी व्याख्या करने दें। मान लीजिए मैं इन अपवाद श्रेणियां होती हैं:क्या आप एक रूपांतरण ऑपरेटर के प्रकार से अपवाद प्राप्त कर सकते हैं?

class ExceptionTypeA : public std::runtime_error 
{ 
    // stuff 
}; 

class ExceptionTypeB : public std::runtime_error 
{ 
    // stuff 

    operator ExceptionTypeA() const; // conversion operator to ExceptionTypeA 
}; 

मैं तो यह कर सकता है, और यह कैच ब्लॉक को गति प्रदान की है?

try 
{ 
    throw ExceptionTypeB(); 
} 
catch (ExceptionTypeA& a) 
{ 
    // will this be triggered? 
} 

मुझे लगता है कि ऐसा नहीं होगा लगता है, जो दुर्भाग्यपूर्ण है जा रहा हूँ, लेकिन मैंने सोचा कि मैं, पूछना चाहता हूँ के बाद से मैं नेट पर या इतने पर इस पर कोई जानकारी नहीं मिल सकी। और हाँ, मुझे एहसास है कि मैं सिर्फ अपने कंपाइलर में प्रोग्राम चला सकता हूं और देख सकता हूं कि क्या होता है, लेकिन यह मुझे नहीं बताएगा कि इस व्यवहार के बारे में मानक क्या कहता है, बस मेरा संकलक लागू करता है (और मुझे विश्वास नहीं है)।

उत्तर

13

आप नहीं कर सकते। 15.3/3 पर Standardese:

एक हैंडलर प्रकार ई के एक अपवाद वस्तु के लिए एक मैच अगर

  • हैंडलर प्रकार cv T या cv T& और ई और टी एक ही प्रकार के कर रहे हैं की है (शीर्ष अनदेखी स्तर cv- क्वालिफायर), या
  • हैंडलर प्रकार cv T या cv T& की है और टी ई के एक स्पष्ट सार्वजनिक आधार वर्ग है, या
  • हैंडलर प्रकारकी हैऔर ई एक सूचक प्रकार है कि या तो या दोनों के द्वारा हैंडलर के प्रकार में बदला जा सकता है
    • एक मानक सूचक रूपांतरण (4.10) निजी की ओर इशारा करने के लिए रूपांतरण या संरक्षित या अस्पष्ट कक्षाएं
    • को शामिल नहीं
    • एक योग्यता रूपांतरण

आपका वांछित परिदृश्य इनमें से कोई भी मेल खाता है। cv का अर्थ है "कॉन्स और/या अस्थिर संयोजन"

+1

पुhew। यहाँ राहत का आह्वान। – sbi

+0

इस कवर सूचक को सदस्यों के लिए करता है? उदाहरण के लिए, सदस्य डेटा के सूचक को contravariant हैं, इसलिए 'int (base :: *)' को 'int (व्युत्पन्न :: *) 'में परिवर्तित किया जा सकता है। क्या मैं पूर्व को फेंक सकता हूं अगर मैं पूर्व को फेंक दूं? जीसीसी असहमत प्रतीत होता है, लेकिन मानक शब्द थोड़ा अस्पष्ट है। – max

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

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