2010-02-23 14 views
14

रोकने वहाँ C++ में एक वर्ग फू परिभाषित करने के लिए एक रास्ता है तोसी ++ एकाधिक वंशानुक्रम हीरा

  1. मैं इसे
  2. मैं इसे से नहीं "हीरे इनहेरिट"
से विरासत सकते हैं कि

आईई

class Cat: public Foo{} // okay 
class Dog: public Foo{} // okay 
class Weird: public Cat, public Dog {} // I want this to throw a compiler error 
+0

@vava: अच्छा संपादन, एहसास नहीं हुआ 1. 2. ऑटो आइटम – anon

+0

आप * वर्चुअल विरासत का उपयोग नहीं करना चाहते हैं या आप इससे अनजान हैं? – Duck

+0

मुझे इससे अनजान था। हालांकि, मैं एक कंपाइलर त्रुटि भी प्राप्त करना चाहता हूं। आधार वर्ग "फू" मैं विरासत में से एक आक्रामक ref-counted सूचक है। मुझे किसी ऑब्जेक्ट में इसके दो उदाहरण नहीं होने चाहिए। – anon

उत्तर

6

Cprogramming.com ट्यूटोरियल: सी में डायमंड समस्या निवारण ++ के साथ ...

http://www.cprogramming.com/tutorial/virtual_inheritance.html

प्रयास करें यह

इस प्रकार की समस्या से बचें या इंटरफ़ेस द्वारा हल किया जा सकता है।

+0

कमाल। मुझे नहीं पता था कि "आभासी" विरासत है। – anon

+0

समस्या यह है कि 'वर्चुअल' विरासत उन लोगों के हाथ में है जो प्राप्त करते हैं, आप वास्तव में इसे बदलने के लिए कुछ भी नहीं कर सकते हैं ... इसलिए उम्मीद है कि व्युत्पन्न वर्ग लिखने वाले लोग आपकी टिप्पणियां पढ़ते हैं;) –

1

जानकारी का एक अन्य स्रोत:

http://www.parashift.com/c++-faq-lite/multiple-inheritance.html

असल में पूरे सी ++ पूछे जाने वाले प्रश्न थोड़ा यह वास्तव में अगर आप सी पर ++ प्रोग्रामिंग कर रहे हैं पढ़ने लायक है।

+0

और संबंधित पुस्तक अच्छी है भी। – markh44

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