Problem with MI - Common Ancestors

A more serious problem occurs when when a class inherits from two parents that each, themselves, have a common ancestor. This is what Scott Meyers rather melodramatically called the ''diamond of death.''

There are many difficult problems that arize from the diamond of death. For example, imagine the common ancestor class, Stream in this example, defines a data field. Should the grandchild class, InOutStream in this slide, get one or two copies of this data area? There is no ``right'' answer to this question, as you can imagine situations where both might be appropriate. Thus, languages such as C++ that support multiple inheritance have complex semantics used to resolve this dilema.

[audio] [real] Text to accompany slide8, in Chapter 13 of An Introduction to Object-Oriented Programming