Choose Distinct Member Function Names When Using Multiple Inheritance

Choose Distinct Member Function Names When Using Multiple Inheritance

When two or more classes serve as base classes in multiple inheritance, you want to choose a distinct name for each member function in order to avoid name ambiguity:

 class AudioStreamer {//real-time sound playerpublic:void Play();void Stop();};  class VideoStreamer {//real-time video playerpublic:void Play();void Stop();}; class AudioVisual: public AudioStreamer, public VideoStreamer {/*_*/};AudioVisual player;; //error:  is AudioStreamer::play() or VideoStreamer::play() to be invoked?

One way to overcome this ambiguity is to specify the full-qualified name of a member function:

  	Player.AudioStreamer::play(); //fine but tedious

However, a preferable solution is the use of distinct method names in the base classes:

 class AudioStreamer {public:void au_Play(); };  class VideoStreamer {public:void vd_Play(); }; 	Player.au_play(); //now distinct: play sound 
See also  How College Students Can Shape the Future of Tech Responsibility

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist