Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
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

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