Ruf einer überladenen Methode mittels using

Codebeispiel

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
 
class Tier
{
public:
  char Name[64];
  int  Fellfarbe;
  int  KrallenLaenge;
  int  AnzahlBeine;
 
  inline void GibNamenAus( void ) { printf( "Ich heiße %s\n", Name ); }
 
  Tier( char const * name, int fellfarbe, int krallenLaenge, int beine )
    : Fellfarbe( fellfarbe )
    , KrallenLaenge( krallenLaenge )
    , AnzahlBeine( beine )
  {
    int laenge = strlen( name );
    if( laenge > 63 ) laenge = 63;
 
    memcpy( Name, name, laenge );
    Name[ laenge ] = '\0';
  } 
};
 
class Hund : public Tier
{
public:
  int  GefangeneKatzen;
 
  inline void GibLaut( void ) { printf( "Wau!\n" ); }
 
  using Tier::GibNamenAus; 
  inline void GibNamenAus( char const * familyName ) 
  { 
    printf( "Ich heiße %s %s\n", Name, familyName ); 
  }
 
  Hund( char const * name, int fellFarbe, int krallenLaenge, int gefangeneKatzen )
  : Tier( name, fellFarbe, krallenLaenge, 4 /* <- Beine */ )  // Basiskonstruktor für die Klasse Tier
  , GefangeneKatzen( gefangeneKatzen )
  {}
};
 
int main( void )
{
  Hund harry( "Harry", 0x000000 /* Farbe */, 2 /* Krallenlaenge */, 4 /* gefangene Katzen */ );
 
  harry.GibNamenAus();
 
  return EXIT_SUCCESS;
}