2010-03-06 8 views
10

Mój przyjaciel przysłał mi ten fragment kodu, aby świętować swoje nowe dziecko urodzenia:C++ fragment kodu dla nowej karty dziecka z życzeniami

void new_baby_name() { father_surname++; } 

Fragment jest z jego punktu widzenia, jest on ojcem i nowe dziecko otrzyma od niego nazwisko.

I odpowiedział tak:

class father_name {}; 
class mother_name {}; 
class new_baby_name: public father_name, public mother_name {}; 

Ale nie jestem w pełni zadowolony z mojej odpowiedzi ...

+3

+1 Słodkie pytanie! –

+3

Nazwy są tak puste ... :) – kennytm

+1

Dodanie imienia jako prywatnego i innych atrybutów, takich jak kolor oczu, kolor włosów, grupa krwi, profil DNA może być chroniony. –

Odpowiedz

30

Poprawna odpowiedź brzmi:

Sleep(0); 
8
class baby 
{ 
public: 
    vector<gene> genes; 
    baby(baby* logical_father, baby* biological_mother, baby* other) 
    { 

     int i; 
     if (other == null) 
     { 
      for (i = 0; i < logical_father->genes.size()) 
      { 
       if (rand() > 0.5) 
       { 
        genes.push_back(logical_father->genes[i]); 
       } 
       else 
       { 
        genes.push_back(biological_mother->genes[i]); 
       } 
      } 
     } 
     else 
     { 
      for (i = 0; i < other->genes.size()) 
      { 
       if (rand() > 0.5) 
       { 
        genes.push_back(other->genes[i]); 
       } 
       else 
       { 
        genes.push_back(biological_mother->genes[i]); 
       } 
      } 
     } 
    } 
} 

Istnieją oczywiście inne metody konstruowania dziecko.

+1

Matka i ojciec to zarówno "baby" o_O – kennytm

+4

Byłoby prostsze, gdybyś zaczął od ustalenia, kto jest ojcem, ale nooo ... – Potatoswatter

+5

@Simon: Geny można odziedziczyć tylko od biologicznego ojca, a nie od logicznego ojca. –

1
destroy Sanity(); 

Może nie działać, może przepełnić stos. Nie jestem dobry w c.

+1

To byłaby w rzeczywistości '~ Poczytalność();' która wywołuje destruktor Poczytalności. –

0

Wystarczy mała bugfix aby uniknąć złych nazw:

class male {}; 
class female {}; 

class father_name {}; 
class mother_name {}; 

template <class gender> 
class new_baby_name; 

template <> 
class new_baby_name<male>: public father_name {}; 

template <> 
class new_baby_name<female>: public mother_name {}; 

Zauważ, że masz poważny problem, jeśli ten powinien odpalić błąd kompilatora ;-)

+0

Dlaczego odziedziczysz po compiletime_error, z pewnością właśnie deklarując 'class new_baby_name;' i nie definiując go będzie działać? –

Powiązane problemy