dcsimg
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: C++
Expertise: All
Aug 28, 1998

WEBINAR:

On-Demand

Building the Right Environment to Support AI, Machine Learning and Deep Learning


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 player
public:
void Play();
void Stop();
};  
class VideoStreamer {//real-time video player
public:
void Play();
void Stop();
}; 
class AudioVisual: public AudioStreamer, public VideoStreamer {/*_*/};
AudioVisual player;
player.play(); //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 
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date